2016-05-30 8 views
1

私はディレクトリからファイルが実際の日付持っているかどうかを確認するためにforfilesのコマンドを使用します。バッチ - 使用している場合は、他のforfilesと再帰的に

forfiles /p C:\copies /s /m *.bak /d 0 
if %errorlevel% == 0 (
    echo OK 
) else (
    echo Non OK 
    EXIT /%errorlevel% 
) 

をしかしif-else statementは、最後のファイルだけで動作します。私は/cパラメータを使用した場合、それが正常に動作しますが、私は他のシンクタンクを行うためにelseを使用することはできません。

/c "cmd /c echo @file is outdated." 

forfilesでのif-else文を使用するための最良の方法は何ですか?

+2

あなたは「...最後のファイルだけで動作する」とはどういう意味ですか?私は 'forfiles'が指定された条件に一致するファイルがあれば 'ErrorLevel'をリセットし、* no *ファイルが見つかると' ErrorLevel'を設定します... – aschipfl

答えて

2

あなたが最初に試すのファイルを反復処理し、その後forfilesを使用することができます。

setlocal enableDelayedExpansion 
for /r "C:\copies" %%# in (*.bak) do (
    (forfiles /p "%%~dp#" /m "%%~nx#" /d 0)&&(
     echo ok 
     color 
)||(
    echo not ok 
    exit !errorlevel! 
) 
) 
+1

'/ s'オプションを削除する必要がありますFORFILESコマンドを使用します。 – dbenham

+1

マスクは '%%〜nx#'でなければなりません – dbenham

関連する問題