フォルダからファイルを削除したいのですが、削除するファイルがない場合は、エラーを無視して他のすべてのエラーをキャプチャする必要があります。以下は私が使用しているコードです。
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 に保存されていないことがわかりました。誰かが私に欠けているものを教えてもらえますか、