1

forfiles を使用して、更新された .xlsx ファイル (1 日未満) のフォルダーをチェックし、更新されたファイルがあるかどうかに応じて別のバット ファイルを実行しようとしています。

最初はこれを行うスクリプトがありましたが、ある日、複数の新しい .xlsx ファイルがあったため、スクリプトが「ループ」し、success.bat ファイルを複数回実行しました。

更新されたファイルが見つからない場合、cmd はエラーで終了するので、それを利用して fail.bat ファイルを実行しました。

これは私が現時点で持っているものです:

@echo on
set found=0
forfiles /p C:\ /m *.xlsx /d 0 /c "cmd /k set found=1"
if /i %found%==1 (
Call Success.bat
) else (
if /i %found%==0 (
Call Fail.bat  
)
PAUSE

これで、更新されたファイルがある場合に問題なく動作します。つまり、ループの問題が解消されます。

しかし、更新されたファイルが見つからず、使用している場合、cmd が終了するという問題が発生しました。

if ERRORLEVEL 1 call fail.bat

もう私にはうまくいかないようです....batファイルを使用したこのif/elseは得意ではありません

4

1 に答える 1

2
forfiles /p c:\ /m *.xlsx /d 0 2>nul && call Success.bat || call Fail.bat

2>nulはエラー メッセージを抑制しますが、追加>nulして標準出力 ( で見つかったファイルforfiles) を抑制することもできます。拡張子を持つファイルが存在しない場合、エラー レベルが設定されます。次のコマンド||は、エラー レベルが設定されている場合にのみ実行されます。

したがって、指定された拡張子を持つファイルが見つからない場合、これは を呼び出しFail.bat、スクリプトの最後に移動します。ファイルが見つかった場合、 が呼び出されますSuccess.bat

于 2014-01-28T00:34:16.657 に答える