我有许多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”文件,就大功告成了!