我的 zip 存档有一个文件:
Père-Noël.txt
该 zip 可以通过 Windows 文件资源管理器、7-Zip 或我尝试过的任何其他工具很好地扩展。但我不知道如何从 PowerShell 中做到这一点。显然我已经尝试过展开-存档 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/expand-archive?view=powershell-5.1但它无法处理文件名并将其乱码成PŠre-N”el.txt
。注意:问题并非特指此示例,而是任何使用 ASCII-127 范围之外的字符的文件名。或者看起来是这样。
任何使用 PowerShell 且不依赖外部工具(无法保证其存在)的解决方案都将被接受。 Windows 10 是平台。我无法进行系统级更改,也不能依赖脚本的用户在其系统上具有任何特定的全局设置。必须有一个解决方案within剧本。
除了这样还有别的办法吗Expand-Archive
?或者 PowerShell 中是否有一个设置可以神奇地实现这一目的?
重现步骤:
在您的 Windows 10 主机上:
创建一个空文件,名为Père-Noël.txt
.
使用 Windows 资源管理器(“压缩文件夹”功能)将文件 ZIP 到您选择的 ZIP 存档中,例如myarchive.zip
.
删除Père-Noël.txt
file.
现在尝试解压myarchive.zip
使用 PowerShell。此操作应该创建文件Père-Noël.txt
again.
使用 PowerShell Compress-Archive cmdlet 进行压缩
是的,如果 ZIP 最初是使用Compress-Archive
cmdlet 然后它在解压缩时实际上按预期工作Expand-Archive
。所以你可以说PowerShell与其自身兼容。它只是与 Windows 资源管理器 ZIP 不兼容。
您可能需要检查编码[System.Text.Encoding]::GetEncodings()
但下面的内容适用于你的例子Père-Noël
$zipfile = 'C:\test\Père-Noël.zip' #Contains Père-Noël.txt
$outpath = 'C:\test\out'
$enc = [System.Text.Encoding]::GetEncoding(29001) #29001, x-Europa, Europa
[System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath, $enc)
希望这可以帮助,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)