2013-03-12 158 views
0

我使用此腳本將所有.txt和.cpi文件壓縮到7zip分隔文件的備份文件夾中。文件壓縮後,我刪除了原始文件。但是這個腳本有一個邏輯缺陷。可以說,如果7zip程序無法運行,文件也會被刪除。我如何更改腳本,以便它不應該先刪除壓縮文件。另外我怎樣才能改變這個腳本,以便它可以壓縮7天以前的文件?謝謝你的幫助。 關閉@echo
SETLOCAL命令行批處理腳本

set _source=C:\test7zip\bak  
set _dest=C:\test7zip\bak  
set _wrpath=C:\Program Files\7-Zip   
if NOT EXIST %_dest% md %_dest%  
for %%I in (%_source%\*.txt,%_source%\*.cpi) do "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" & del "%%I" 

暫停

回答

0

你似乎現在已經超過我,但我也許能幫助....

的7zip的裏面你可以一個批處理文件,當解壓縮更改系統變量... 解壓縮文件的批處理文件(您已經完成)可以檢查變量是否爲真,然後刪除文件....或其他。

希望能幫助嗎?

對於壓縮文件女巫是一個特定的日子...你可以有一個批處理文件,有一個7天的計時器,並在時間到了後,它將文件的特定目錄壓縮成7zip?

這就是我可以幫你的。

0

我沒有徹底檢查或測試你的代碼,但我確實注意到了這一點。腳本的最後一行中的「&」會創建一個條件命令,該條件命令將始終執行第二條命令,而不管第一條命令是失敗還是成功。將其更改爲& &創建條件命令,其中第二個命令只執行第一個成功完成後,像這樣:

爲%%我在(%_source%* TXT,%_源%*。 CPI)做 「%_wrpath%\ 7z格式」 一 「%_dest%\ %%〜nI.7z」 「我%%」 & &德爾 「%%我」

對於包括超過7天以上的文件,使用以下更改將它們移動到臨時目錄,然後將它們壓縮:

set _source=C:\test7zip\bak 
set _dest=C:\test7zip\bak 
set _temp1=C:\test7zip\temp1 

set _wrpath=C:\Program Files\7-Zip   
if NOT EXIST %_dest% md %_dest% 
forfiles /P %_source% /S /M *.txt /D -7 /C "cmd /c move @file %_temp1%" 
forfiles /P %_source% /S /M *.cpi /D -7 /C "cmd /c move @file %_temp1%" 
for %%I in (%_temp1%\*.txt,%_temp1%\*.cpi) do "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" && del "%%I"