我有一个实际执行我想要的批处理脚本(获取许多文件并将它们放在与它们来源相同的目录中作为.bz2文件)。我需要一些帮助,因为我需要删除原始文件。此外,当输入大小太大(无法提供完全号码,可能大约40左右)时,批处理崩溃。我试图自己解决这个问题,不幸的是,批量对我来说是胡言乱语。如果这可以删除原始文件,我可以处理当前的输入大小。任何人都可以给我的任何帮助将不胜感激。这是我目前的代码:
@Echo Off
:Start
If [%1==[ Goto :EOF
PushD %~pd1
"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1
Shift
PopD
Goto Start
我还想提一下,我不是此代码的原作者,它是在论坛上发布的。
答案 0 :(得分:1)
我会做一个FOR循环。
::start batchfile
@echo off
setlocal
::set local variables
set input=C:\input
set 7zip=C:\Program Files\7-Zip
::The reason I would use this forloop is that when you start your loop,
::you can say for each files in a recursive way do the following:
::IF (test) do (<command1> <command2>)
::The file that is being processed is called %%i during the whole loop (for that file)
::so at the end of your loop you just 'del <file>' your source
for /f %%i in (%input%\*.bz2) do (
%7zip% u -tbzip2 "%input%\%%i" "%%i"
del "%input%\%%i"
)
goto: eof
我不是真正的专家,但我希望这能帮到你的路上
答案 1 :(得分:0)
更改调用解压缩实用程序的行,如下所示:
"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1 && del %~nx1.bz2
粗体部分表示“如果&&
左侧的命令成功完成,则删除指定的文件”。因此,如果由于某种原因文件未解压缩或未完全解压缩,del
将无法触发,文件将保留。也就是说,如果你希望它像那样。
如果Rps的解决方案很适合您,您可能需要相应地更改它。
但在使用del
之前,我首先会尝试找出(通过运行,可能是7z.exe /?
或7z.exe -?
)unzipper实用程序是否有一个参数来告诉它删除存档如果成功解压缩,则会自动这样您就不必手动实现该功能。