バッチ - 忽略エラー「が見つかりませんファイル」FORFILES

参照します。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 ELSESET  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% 

 

おすすめ

転載: www.cnblogs.com/frankcui/p/11599547.html