批量拉链 - 需要删除旧文件

时间:2011-01-13 21:21:00

标签: batch-file dos batch-processing

我有一个实际执行我想要的批处理脚本(获取许多文件并将它们放在与它们来源相同的目录中作为.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

我还想提一下,我不是此代码的原作者,它是在论坛上发布的。

2 个答案:

答案 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实用程序是否有一个参数来告诉它删除存档如果成功解压缩,则会自动这样您就不必手动实现该功能。