希望有人能够帮助我找到更快的方法来做到这一点:
我有 640 个文件,每个文件都需要单独压缩到自己的 .gz 文件中。
7-zip 一次仅允许将 1 个文件压缩为 .gz。有没有一种方法可以一次性完成所有 640 个任务,同时将它们保留为单独的文件? (运行窗口)
提前致谢!
这个答案有点晚了,但为了帮助我自己和其他将来遇到这个问题的人,可以使用 shell 脚本在每个文件上执行 7Zip 命令行。
下面的关键行是
foreach
循环和 7z.exe
可执行文件的 PowerShell 调用运算符。
a
用于将文件添加到存档中。-tgzip
指定 Gzip 格式。"$newFileName.gz"
作为存档名称。$newFileName
作为要压缩的文件的名称。警告!在我的用例中,我正在用文件名中的新日期重命名文件,您可能想要更改逻辑...
PowerShell 示例:
$files=[System.IO.FileInfo[]](Get-ChildItem ./*.txt);
$now=[System.DateTime]::Now.Date;
$span=[System.TimeSpan]::FromDays($files.Length);
$startDate=$now - $span;
$files=Sort-Object -InputObject $files -Property Name;
$index=0;
foreach ($file in $files) {
$newDateText = ($startDate + [TimeSpan]::FromDays($index)).ToString('yyyyMMdd');
$newFileName = "myPrefix.$newDateText.txt";
Write-Host "$($file.Name) => " -ForegroundColor Cyan -NoNewline;
Write-Host "$newFileName.gz" -ForegroundColor Green;
#Rename-Item -Path $file -NewName $newFileName;
& "c:\Program Files\7-Zip\7z.exe" a -tgzip "$newFileName.gz" $newFileName
$index += 1;
};
如果您不被迫使用 7-zip,还有命令行替代方案。 一种是从
https://gnuwin32.sourceforge.net/packages/gzip.htm下载
gzip.exe
二进制文件并在命令行上运行:
c:\my_data> gzip.exe -v *.data
我不保证这个二进制文件是安全的,但我没有特别的理由相信它不安全。您的 IT 部门可能不批准下载和执行二进制文件。
或者,如果您碰巧安装了 Windows 版 Git、MinGW 编译器或 MSYS2 编译器环境,这些环境包括
gzip
。打开环境终端(例如 Git Bash):
~ > cd /c/my_data
/C/my_data > gzip -v *.data