将 zip 档案批量重新打包为 7z

将 zip 档案批量重新打包为 7z

我有许多zip存档文件,我想将它们重新打包成7z存档格式,因为这样可以节省很多空间。如何在 Windows 7 计算机上批量重新打包这些文件?

我尝试通过 7-zip 归档程序的 GUI 版本执行此操作,但没有找到相应的功能。WinRar 具有“转换”功能,但它无法归档7z格式。

我并不是专门寻求涉及批处理文件脚本的解决方案。

答案1

这是我对这个问题的看法:

for %%F in (*.zip) do ( "C:\Program Files\7-Zip\7z.exe" x -y -o"%%F_tmp" "%%F" * & pushd %%F_tmp & "C:\Program Files\7-Zip\7z.exe" a -y -r -t7z ..\"%%~nF".7z * & popd & rmdir /s /q "%%F_tmp" )

将其保存为zip to 7z.bat文件,将其放入包含要转换的所有 zip 文件的目录中,然后双击它。

感谢 Clint Priest 提供基本代码。

答案2

您可以使用 7zip 命令行(详细示例这里)首先提取所有文件/文件夹(使用命令e),然后将它们重新压缩为 7z(使用a命令)。

如果您计划重复此操作,请考虑在 .bat/.cmd 文件中捕获命令行。

在尝试处理大量档案之前,请务必先在小目录上进行测试!

答案3

下面是一个可以为您执行此操作的命令行,假定 zip 文件与 7z.exe 位于同一目录中:

for %F in (*.zip) do ( 7z.exe e -y -o%~nF.tmp %F * & pushd %~nF.tmp & ..\7z.exe a -y -r -t7z ..\%~nF * & popd & rmdir /s /q %~nF.tmp )

答案4

user1306322 的回答对我非常有帮助,谢谢!!我只是想从 rar 转换为 zip,所以我更改了扩展名,效果很好

for %%F in (*.rar) do ( "C:\Program Files\7-Zip\7z.exe" x -y -o"%%F_tmp" "%%F" * & pushd %%F_tmp & "C:\Program Files\7-Zip\7z.exe" a -y -r -tzip ..\"%%~nF".zip * & popd & rmdir /s /q "%%F_tmp" )

然后我想删除这些文件,他们在对话中说最好不要删除,以防某些东西无法转换,因为它会被删除并丢失,但我不得不多次这样做(许多文件夹有不同的漫画)所以事后删除它们是一项艰巨的工作,我宁愿冒这个险,我在下面添加了一行这样的

del *.rar

就这样,一切都完成了!唯一的问题是我必须逐个文件夹并执行脚本,我想知道我是否可以添加一些东西,只需在父 Manga 目录中运行它,它就会在所有子文件夹中起作用...

无论如何,我只想评论一下,我这样做是为了将文件从 .cbr 转换为 .cbz,所以最终的代码是 user1306322 所做的,加上前后的重命名行

ren *.cbr *.rar
for %%F in (*.rar) do ( "C:\Program Files\7-Zip\7z.exe" x -y -o"%%F_tmp" "%%F" * & pushd %%F_tmp & "C:\Program Files\7-Zip\7z.exe" a -y -r -tzip ..\"%%~nF".zip * & popd & rmdir /s /q "%%F_tmp" )
ren *.zip *.cbz
del *.rar

因此,如果有人正在阅读本文,但又像我一样不懂编码,以下是批量将 cbr 转换为 cbz 的说明:首先安装 7zip,然后在要转换文件的文件夹中创建一个文本文件 (.txt),打开它并将上面的代码粘贴进去,保存并关闭,然后将扩展名“.txt”重命名为“.bat”,例如“cbr to cbz.bat”。双击这个“cbr to cbz.bat”文件,就大功告成了!

相关内容