参照します。https://stackoverflow.com/questions/16820681/suppress-forfiles-no-files-found-error
解決:
解決策は、FORループでFORFILESコマンドの出力をキャプチャERRORで始まる文字列のためにそれを検索し、結果を変数に格納することです。そこから、あなたが設定するIF / ELSEディレクティブを使用することができます errorlevel
応じて。ここでは、コード(マイナスいくつかのログとコメント)です。
CD / dはC:\ WINDOWS \ System32に SET _CmdResultは= NONE FOR / F "トークン= *" %% IN(「FORFILES / P "[ファイルパス...] \ IDOC_ARCHIVE" / M * * / D -14 / C "CMD / C DEL @file" 2 ^> ^&1 ^ | FINDSTRのERROR ')DO SET _CmdResult = %% IF "%_CmdResultの%" == "ERROR:指定した検索条件では見つかりませんでしたファイルを。" ( SETは ERRORLEVEL = 0 )ELSE( SET ERRORLEVEL = 1 )IF "%の_CmdResultの%" == "NONE" SET エラーレベル = 0
ただ、などの任意の文字をエスケープしてください >&|
FORループインチ
テストコード:
ECHO "\\ global.com \ GM \ EU \ unitycredit_dev \ ACE \ TraderMetrics \ Sybaseの\ TakaraBookData \ 7日より古いネットワークディレクトリから古いタカラ帳ダンプファイルを削除し、" SET _CmdResult = NONE FOR / F "トークン= *" %% / M "GM \ EU \ unitycredit_dev ACE \ TraderMetrics \ Sybaseの\ TakaraBookData \ \ \ \\ global.com" IN( 'FORFILES / P *。* / D -7 / C " CMD / C エコー @のパス " 2 ^ > ^&1 ^ | FINDSTRのERROR ')SET _CmdResultは= %% DO IF "%_CmdResultの%" == "ERROR:いいえ、ファイル指定した検索条件を発見しました。"( SET ERRORLEVEL = 0 )ELSE( SET ERRORLEVEL = 1 ) IF "%の_CmdResultの%" == "NONE" のSET ERRORLEVEL = 0 ECHO " の検索すべての7日間に、古いファイルを特定でパスを、PRINT、ファイルPATHを ..." pushdは「\\ global.com GM \ EU \ \ unitycredit_dev ACE \ \ TraderMetrics \ Sybaseの\ TakaraBookData \ " &&( forfiles -s -m *。* / D -7 / C " CMD / C エコー @のパス " )&POPD ECHO " の検索すべての7日の古いファイルを一定にパスをDELETE .. 。」 のpushd"\\ global.com GM \ EU \ \ unitycredit_dev ACE \ TraderMetrics \ Sybaseの\ TakaraBookData \ \" &&( forfiles -s -m *。* / D -7 / C " CMD / C ・デル @ パス " )&POPD IF "%のエラーレベルの%" == "0" ( 設定ERRORLEVEL = 0 EXIT / B 0 )ELSE( ECHO " ERRORLEVEL =%ERRORLEVEL%" EXIT / Bの%のERRORLEVEL% )