powershell 一些zip文件的奇怪行为,而提取(7zip)

epggiuax  于 2023-02-19  发布在  Shell
关注(0)|答案(1)|浏览(161)

我有一个解压文件的问题。通常我使用PowerShell脚本,我通过SQL Server数据库(过程)运行,它会解压我的文件,我想要他们(数据库应该没有任何问题)。
脚本的主要部分:

exec '"for %i in ("'+@path+'\*.zip") do "C:\Program Files\7-Zip\7z.exe" x "%i" -o"'+@to+'""'

但偶尔会有一个.zip文件,如果运行此脚本将提取文件名编码不好的文件,为了防止这种情况,我需要手动打开每个.zip文件,并单击以在7-zip GUI中提取,这将正确返回文件名。
这种手动方式做的事情非常,非常慢。因为它需要在服务器上完成,上帝禁止,如果我在家里的VPN。所以让我们假设我有5个zip文件(3 GB),它会花我几个小时来解压。如果我这样做,通过服务器它需要像2分钟。
所以我只是想弄清楚如何用脚本解压缩它,我的脚本和手动解压缩有什么区别?

jq6vz3qz

jq6vz3qz1#

根本原因可能是创建文件的安装程序与windows环境的代码页不匹配。是否有任何zip文件是公开的?如果有,您能提供链接吗?
要处理这些问题文件,你需要知道文件名使用了什么编码,如果7z gui可以自动处理这些文件,那么必须有一个选项告诉它使用什么编码。
一旦知道了编码,就可以使用7z中的-scs选项来正确解码文件名。
现代的zip文件没有这个问题,因为它们以UTF-8存储文件名。

相关问题