- 締切済み
バッチファイル 複数条件判定方法
いつも大変御世話になっております。 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ではない場合は異常終了のログをはきだす仕組みにしたいのです。 プログラムのどこに問題があるのでしょうか? バッチファイルにお詳しい方、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 何卒、宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- osamuy
- ベストアンサー率42% (1231/2878)
> IF FLAG_A == %OK% IF FLAG_B == %OK% ( ここ環境変数の記述がなんかおかしいような。 こんなのとか: Set RESULT=異 If %FLAG_A%%FLAG_B% == %OK%%OK% Set RESULT=正 echo %yyyy%/%mm%/%dd% %HHMMSS% %RESULT%常終了 >> %LOG_DIR1%\% ……いやあんまりお勧めの書き方でないですね。