gpt4 book ai didi

windows - 如何使用 PowerShell 扩展 ZIP 存档(UTF-8 文件名)

转载 作者:行者123 更新时间:2023-12-02 13:19:43 30 4
gpt4 key购买 nike

我的 zip 存档只有一个文件:

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 的空文件。

  2. 使用 Windows 资源管理器(“压缩文件夹”功能)将文件压缩到您选择的 ZIP 存档中,例如 myarchive.zip

  3. 删除Père-Noël.txt 文件。

  4. 现在尝试使用 PowerShell 解压 myarchive.zip。此操作应再次创建文件 Père-Noël.txt

使用 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)

希望这有帮助,

关于windows - 如何使用 PowerShell 扩展 ZIP 存档(UTF-8 文件名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60233853/

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