将多个文件压缩到单独的 .gz 文件中(Windows)

问题描述 投票:0回答:2

希望有人能够帮助我找到更快的方法来做到这一点:

我有 640 个文件,每个文件都需要单独压缩到自己的 .gz 文件中。

7-zip 一次仅允许将 1 个文件压缩为 .gz。有没有一种方法可以一次性完成所有 640 个任务,同时将它们保留为单独的文件? (运行窗口)

提前致谢!

windows gzip 7zip
2个回答
0
投票

这个答案有点晚了,但为了帮助我自己和其他将来遇到这个问题的人,可以使用 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;
};

0
投票

如果您不被迫使用 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
© www.soinside.com 2019 - 2024. All rights reserved.