0

フォルダからファイルを削除したいのですが、削除するファイルがない場合は、エラーを無視して他のすべてのエラーをキャプチャする必要があります。以下は私が使用しているコードです。

FOR /F "tokens=*" %%a IN ('FORFILES /P "%%G" /D -3 /C "cmd /c DEL @path" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a

IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 

    SET errorlevel=0 

 ) ELSE ( 

    SET errorlevel=1

)

IF "%_CmdResult%" == "NONE" SET errorlevel=0

IF NOT %errorlevel% EQU 0 ( 

goto delete_fail )

以下は、上記のコードを実行したときにコマンドプロンプトに表示されるものです。

FOR /F "tokens=*" %a IN ('FORFILES /P "%G" /D -2 /C "cmd /c DEL @path" | FINDSTR ERROR') DO SET _CmdResult=%a

 IF "NONE" == "ERROR: No files found with the specified search criteria." <<<<< _CmdResult is still "NONE"

(

SET errorlevel=0  

)  ELSE (

SET errorlevel=1 )

 IF "NONE" == "NONE" SET errorlevel=0

 IF NOT 0 EQU 0 (goto delete_fail  )

ログに基づいて、削除するファイルがない場合、エラー文字列が _CmdResult に保存されていないことがわかりました。誰かが私に欠けているものを教えてもらえますか、

4

3 に答える 3

0

上記のコードの前にこのコマンドを使用し、エラーレベルで分岐します

FORFILES /P "%%G" /D -3 2>&1 |find "ERROR:" >nul
if errorlevel 1 goto :nofiles
FORFILES /P "%%G" /D -3 /C "cmd /c DEL @path"
于 2013-12-21T13:48:30.320 に答える