当你有一个像file.zip
这样的简单拉链时,如何处理这种情况,但你内部的文件长度超过微软允许的260个字符(实际上它的数量稍微少一点,但确实如此在我们的情况下无所谓)?
如果您从某个来源(例如Google)获取一个文件,例如 400 个字符。
如何通过Windows中的PowerShell正确解压缩(最好是7 - > powershell 4.x)?
你可以通过一些解压缩工具来实现,并使用unicode路径技巧(\\?\
),如:
unzip test.zip -d \\?\c:\<path>
我想通过powershell脚本(版本4.x)执行相同的操作。
以下是我的脚本(受其他人启发),通常有效。
# .NET Framework 4.5 required (at least PowerShell -Version 2)
Add-Type -AssemblyName System.IO.Compression.FileSystem # -ErrorAction Stop
$source_zip_file= 'C:\<path>\file.zip'
$destination_directory = 'c:\t\unpack'
# Does NOT support long path!!! with
# $destination_directory = '\\?\c:\t\unpack'
$overwrite_destination = $true
$archive = [IO.Compression.ZipFile]::OpenRead($source_zip_file)
foreach ($entry in $archive.entries) {
# better than Join-Path when spaces are present
$entry_file_path = [System.IO.Path]::Combine($destination_directory, $entry.FullName)
$entry_directory = [System.IO.Path]::GetDirectoryName($entry_file_path)
# create destination directory if not present
If (!(Test-Path $entry_directory)) {
New-Item -ItemType Directory -Path $entry_directory | Out-Null
}
[System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, $entry_file_path, $overwrite_destination)
}
如何将其展开以使用长路径\\?\c:
?
修改 - 示例文件
https://anonfile.com/p94fG6d7b7/1.zip
生成错误消息:
由于评论异常调用&#34; GetDirectoryName&#34;用&#34; 1&#34;参数:&#34; The 指定的路径,文件名或两者都太长。完全合格 文件名必须少于260个字符,以及目录名称 必须少于248个字符。&#34;
编辑
我意识到这不是一件容易的事,而且.NET的支持很可怕。
我的想法是,就像嘿,脚本专家那样!通过Windows API博客Weekend Scripter: Remove a Long Path File。