我的压缩包只有一个文件:
Père-Noël.txt
这个zip文件可以很好的用Windows文件资源管理器、7-Zip或者其他我试过的工具来扩展,但是我不知道如何在PowerShell中扩展,显然我试过Expand-Archive,但是它不能处理文件名,并且会把它变成PŠre-N”el.txt
。这个问题并不是这个例子特有的,而是任何使用ASCII-127范围之外的字符的文件名的问题。
任何使用PowerShell且不依赖外部工具(无法保证其存在)的解决方案都将被接受。Windows 10是平台。我不能进行系统级更改,也不能依赖脚本用户在其系统上进行任何特定的全局设置。它必须是脚本 * 内 * 的解决方案。
除了Expand-Archive
,还有别的方法吗?或者PowerShell中有没有一个设置可以神奇地完成这个任务?
重现步骤:
在Windows 10主机上:
1.创建名为Père-Noël.txt
的空文件。
1.使用Windows资源管理器("压缩文件夹"功能)将文件压缩到您选择的ZIP存档中,例如myarchive.zip
。
1.删除Père-Noël.txt
文件。
1.现在尝试使用PowerShell解压缩myarchive.zip
。此操作应再次创建文件Père-Noël.txt
。
使用PowerShell压缩-存档cmdlet进行压缩
如果ZIP最初是使用Compress-Archive
cmdlet创建的,那么在使用Expand-Archive
解压缩时,它实际上会按预期工作。因此,您可以说PowerShell与其自身兼容。它只是与Windows资源管理器ZIP不兼容。
3条答案
按热度按时间d6kp6zgx1#
您可能需要检查编码
[System.Text.Encoding]::GetEncodings()
,但下面的示例适用于Père-Noël
希望这能帮上忙,
js81xvg62#
尽管我们是在2021年到达这里的,但我还是遇到了同样的问题。和公认的答案一样,我的解决方案也是基于System.IO.Compression命名空间的。expand-archive命令接受pipeline-input和一个-Force开关。我的实现目标也是一样的--仍在工作中,没有经过彻底的测试。
Find unzip function here
sr4lhrrt3#
它与公认的答案相似,但我更喜欢这个答案:
source