-->

PowerShell创建一个zip(或7z格式)文件夹中的每个文件然后删除原始文件(Powershe

2019-10-19 07:28发布

我有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

Answer 1:

尝试添加-forceremove-item



Answer 2:

更改delFiles功能:

function delFiles()
 {
     dir *.iso| ForEach-Object { Remove-Item $_.FullName } 
 }


Answer 3:

尝试这个:

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的前7zDel命令,看看有什么程序将运行它之前做。 如果你注意到我把它只能压缩.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文件,该文件可以在资源管理器中打开和蹦床网上单人仍然可以将文件accesed。 它也将提高压缩比。 我再次建议先检查所有文件都继续在中间暂停命令之前压缩。

看看7-zip.chm文件在7-Zip文件夹更多的帮助。



Answer 4:

我认为一个解决方案是在这里:

超级用户- 7-Zip的脚本荏苒后删除



文章来源: Powershell to Create a zip (or 7z) of each file in a folder then delete original file