我有一个带有Ton of iso图像的文件夹。我发现很多图像都有伪数据,以达到原始DVD的大小。我可以通过拉链来节省大量空间。我尝试创建批处理文件,但无法正常工作。
所以,我基本上希望它为文件夹中的每个文件创建一个.7z,然后删除原始文件。
这就是我得到的。它会压缩文件,但之后可以删除文件。无法弄清楚原因:
function zipFiles()
{
dir *.iso| ForEach-Object { & "7z.exe" a -mx9 $_.BaseName $_.Name }
}
function delFiles()
{
dir *.iso| ForEach-Object { & Remove-Item $_.BaseName $_.Name }
}
zipFiles
delFiles
答案 0 :(得分:0)
试试这个:
pushd C:\...[path to folder]
for /r %%a in (*) do (
if "%%~xa"==".iso" (
7z a "%%~na.zip" "%%~a"
if exist "%%~na.zip" (
Del "%%~na.iso"
)
)
)
popd
注意:我认真地建议在Echo
和7z
命令之前添加Del
以查看程序在运行之前将执行的操作。如果您注意到我只创建了压缩.iso
个文件。
最后我建议改用这个程序:
pushd C:\...[path to folder]
7z a Images.zip *.iso
Echo.&Echo Check all the files are compressed
pause
del *.iso
popd
将它们全部压缩为1 .zip
文件,可以在资源管理器中打开,并且仍然可以接收单个文件。它还将提高压缩比。我再次建议首先检查所有文件是否已压缩,然后继续执行中间暂停命令。
查看7-zip.chm
文件以获取7-zip文件夹中的更多帮助。
答案 1 :(得分:0)
尝试将-force
添加到remove-item
答案 2 :(得分:0)
更改 delFiles 功能:
function delFiles()
{
dir *.iso| ForEach-Object { Remove-Item $_.FullName }
}
答案 3 :(得分:0)
我认为解决方案就在这里: