0

このスクリプトを使用して、すべての .txt および .cpi ファイルを 7zip で分割されたファイルのバックアップ フォルダーに圧縮します。ファイルが圧縮された後、元のファイルを削除します。ただし、このスクリプトには論理的な欠陥があります。7zip プログラムの実行に失敗した場合、ファイルも削除されるとしましょう。最初に圧縮されない場合にファイルを削除しないようにスクリプトを変更するにはどうすればよいですか。また、このスクリプトを変更して、7 日以上経過したファイルを圧縮するにはどうすればよいですか? ご協力いただきありがとうございます。@echo off
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"

一時停止

4

2 に答える 2

0

あなたのコードを徹底的にチェックしたりテストしたりはしませんでしたが、すぐに気付きました。スクリプトの最後の行の「&」は、最初のコマンドが失敗するか成功するかに関係なく、常に 2 番目のコマンドを実行する条件付きコマンドを作成します。これを && に変更して、次のように、最初のコマンドが正常に完了した場合にのみ 2 番目のコマンドが実行される条件付きコマンドを作成します。

for %%I in (%_source%*.txt,%_source%*.cpi) do "%_wrpath%\7z" a "%_dest%\%%~nI.7z" "%%I" && del "% %私"

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"
于 2013-03-23T08:38:03.960 に答える
0

あなたは今私よりも多くのようですが、私は助けることができるかもしれません....

7zip内には、解凍時にシステム変数を変更するバッチファイルがあります...ファイルを解凍するバッチファイル(すでに行ったもの)は、ファイルを削除する前に変数がtrueかどうかを確認できます....または何か.?

とにかくそれが役立つことを願っていますか?

ファイルの圧縮のために、魔女は特定の日数を経過しています... 7日間のタイマーを備えたバッチファイルを作成し、時間が経過するとファイルの特定のディレクトリを7zipに圧縮できますか?

それが私があなたを助けることができるすべてです。

于 2013-03-13T05:05:54.027 に答える