2017-11-22 5 views
0

私の目標は、特定のフォルダのすべてのテキストファイルの内容と1つのtxtファイルの内容を比較することです。ANY txtファイルが一致すると、一致するものがなければ処理し、別のセットを行います。fcファイルをループして一致するファイルがあるかどうかを調べる

私は以下やってみました:

@echo off 
:main 
fc "C:\Users\degibson\Desktop\test\*.txt" "C:\Users\degibson\Desktop\test2\temp1.txt" > NUL 
if errorlevel 1 goto error 

:next 
echo do some important task 
pause 

:error 
echo do some other important task 
pause 

問題 - すべてのファイルがtemp1.txt内容にマッチした場合にのみ機能します。

このタスクを実行するより良い方法はありますか?

答えて

0

FORコマンドを使用して、ディレクトリ内のすべてのテキストファイルを反復処理することができます。 の代わりにCALLコマンドを使用することをお勧めします。これは、FORコマンドに実行を戻すので、CALLはコマンド実行を中断します。GOTOは実行されません。実行は、組み込みの:EOFラベルを使用して現在の呼び出しプロセスを終了することによってFORコマンドに戻ります。 EXIT /Bを使用することもできます。

@ECHO OFF 

:main 
FOR %%G IN (C:\Users\degibson\Desktop\test\*.txt) DO (
    fc "%%G" "C:\Users\degibson\Desktop\test2\temp1.txt" >NUL 
    if errorlevel 1 (
     CALL :error 
    ) ELSE (
     CALL :next 
    ) 
) 
GOTO :EOF 
:next 
echo do some important task 
pause 
GOTO :EOF 

:error 
echo do some other important task 
pause 
GOTO :EOF 
関連する問題