バッチファイル 複数条件判定方法
いつも大変御世話になっております。
WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。
上記バッチファイルは以下のようになっています。
コード------------------------------------------------
rem --- フラグ変数 ---
set OK=0
set NG=1
rem --- 初期化 ---
set FLAG_A=%OK%
set FLAG_B=%OK%
rem --- 時間変数 ---
set yyyy=%date:~-10,4%
set yy=%date:~-8,2%
set mm=%date:~-5,2%
set dd=%date:~-2,2%
set YMD=%date:~-8,10%
set HHMMSS=%time:~0,8%
set FILE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%%TIME:~0,2%%TIME:~3,2%
set FILE_DATE=%FILE_DATE: =0%
rem --- 存在ファイル格納フォルダ変数 ---
set SERCH_DIR1=D:\sample1\
set SERCH_DIR2=D:\sample2\
rem --- ログフォルダ変数 ---
set LOG_DIR1=D:\sampleLOG
rem --- ログファイル変数 ---
set LOG_FILE1=LOG.txt
rem --- 検索対象ファイル変数 ---
set SERCH_FILE1=sample1.txt
set SERCH_FILE2=sample2.txt
REM <STEP1>
REM %SERCH_FILE1%存在チェック開始===============================================
echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1%
IF EXIST %SERCH_DIR1%\%SERCH_FILE1% goto YES1
ECHO ON
echo %SERCH_FILE1%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1%
ECHO ON
set FLAG_A=%NG%
goto NEXT_SERCH_FILE
:YES1
ECHO ON
echo %SERCH_FILE1%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1%
ECHO OFF
REM %SERCH_FILE1%存在チェック終了===============================================
PAUSE
:NEXT_SERCH_FILE
REM <STEP2>
REM %SERCH_FILE2%存在チェック開始===============================================
echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1%
IF EXIST %SERCH_DIR1%\%SERCH_FILE2% goto YES2
ECHO ON
echo %SERCH_FILE2%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1%
ECHO ON
set FLAG_B=%NG%
goto HANTEI
:YES2
ECHO ON
echo %SERCH_FILE2%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1%
ECHO OFF
REM %SERCH_FILE2%存在チェック終了===============================================
PAUSE
REM <終了処理>==================================================================
:HANTEI
ECHO ON
echo %FLAG_A% >> %LOG_DIR1%\%LOG_FILE1%
echo %FLAG_B% >> %LOG_DIR1%\%LOG_FILE1%
PAUSE
IF FLAG_A == %OK% IF FLAG_B == %OK% (
echo %yyyy%/%mm%/%dd% %HHMMSS% 正常終了 >> %LOG_DIR1%\%LOG_FILE1%
) ELSE (
echo %yyyy%/%mm%/%dd% %HHMMSS% 異常終了 >> %LOG_DIR1%\%LOG_FILE1%
)
PAUSE
コード------------------------------------------------
一番最後の判定処理がうまく動作しません。
※両フラグ(FLAG_AとFLAG_B)が0の時に正常終了のログをはきだし、どちらかが0ではない場合は異常終了のログをはきだす仕組みにしたいのです。
プログラムのどこに問題があるのでしょうか?
バッチファイルにお詳しい方、ご教授願いますでしょうか?
※サンプルがあれば、光栄です。
何卒、宜しくお願い致します。
補足
ご回答ありがとうございます。 SaKaKashi様の仰る通り for %%i in (%SrcDir%*.msu) do ( echo %%i では全件ループするのですが、if文を入れると なぜか1件しか処理出来ないのです。 何が原因なのかご教授お願いします。