gpt4 book ai didi

powershell - 如何在 Powershell 中验证文件是否为 zip 文件

转载 作者:行者123 更新时间:2023-12-01 00:47:08 25 4
gpt4 key购买 nike

我每月从供应商处收到要处理的文件集合。这些文件没有扩展名,但它们具有一致的命名约定。但是,有时缺少扩展名会导致一些问题,因为有时那里有一个压缩文件夹,其中的文件名是我有代码要处理的文件。所以,我正在寻找某种方法来对每个文件进行 bool 检查,以确认它是否实际上是一个压缩文件夹。不同之处在于 Excel 文件可以像压缩文件夹一样打开(其中包含 docProps、xl、_rels。)

我一直没有成功尝试获取子项和获取内容。
如果它实际上是一个 zip 文件,有没有办法对返回 true 的文件进行“测试”?

最佳答案

Carbon Powershell 模块包含一个 cmdlet Test-ZipFile 它会告诉你它是否是一个 zipfile。

如果您不能使用该模块,您可以查看 file header .这有点难看(时间短)但有效:

$contents = [string](get-content -raw -Encoding Unknown -path $filepath).ToCharArray();

[convert]::tostring([convert]::toint32($contents[0]),16);

输出为 4b50对于已知为 ZIP 文件的文件,它与签名的前两个字节匹配,反转。

从长远来看,让供应商修复他们的系统以提供有关文件的更多信息。特别是如果它们是您想要的类型。

如果您需要区分 Excel (2007+ ) 和真正的 ZIP 文件,而没有扩展名,那么您就会陷入困境 - 正如您已经知道的那样,您只需将 .xlsx 文件重命名为 .zip ,它就会像其他任何文件一样打开ZIP 文件 - 没有什么可区分的。

关于powershell - 如何在 Powershell 中验证文件是否为 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com