2011-01-13 65 views
1

我有一個批處理腳本,實際上做我想要的(取得多個文件,並將它們放在相同的目錄中,它們來自.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 

我還想提一下,我不是這個代碼的原始作者,它被張貼在論壇上。

回答

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 

我不是真的專家,但我希望這可以幫助你對你的方式

+0

就我個人而言,我不會只在解壓縮之後在下一行放置`del`命令,而不檢查是否有任何問題解壓縮。 – 2011-02-08 06:47:41

0

變化,其中解壓縮實用程序稱爲像這樣的行:

"C:\Program Files\7-Zip\7z.exe" u -tbzip2 %~nx1.bz2 %1 && del %~nx1.bz2

粗體表示該部件'刪除指定的文件,如果&&左邊的命令成功完成'。所以,如果由於某種原因文件沒有解壓縮或解壓縮不完整,del不會被觸發,文件會保留。也就是說,如果你希望它是那樣的話。

如果RPS的解決方案適合您,那麼您可能需要相應地更改它。

但使用del我第一次嘗試找出(通過運行,也許7z.exe /?7z.exe -?)的unzipper效用是否有一個參數來告訴它,如果成功解壓縮,自動刪除歸檔之前。這樣你就不必手動實現該功能。