バッチファイル 複数条件判定方法
いつも大変御世話になっております。
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ではない場合は異常終了のログをはきだす仕組みにしたいのです。
プログラムのどこに問題があるのでしょうか?
バッチファイルにお詳しい方、ご教授願いますでしょうか?
※サンプルがあれば、光栄です。
何卒、宜しくお願い致します。
補足
ありがとうございます。 以下のサイトを見るとSET /A num=0x12、SET /A num=022の記載があります。 入力した値にの先頭に0xが付いていれば16進数、先頭に0がついていれば8進数という判断を行えば、できるのではと考えております。先頭の文字が1~9であれば、10進数と判断をして別の変数にセットしたいと考えております。 set /a NUM=="10進数で数字を入力してください >"とできればいいのですが、set /p NUM="10進数で数字を入力してください >”にしないとプロンプトが表示されないので、set /pにしてあります。 set /pで指定した変数に入力された文字をSET /A numに渡せば、実現できるのではと考えておりますが、うまくプログラムへの記述方法がわからなく、困っております。 ---------------------------------------------------------------------- Windowsコマンドプロンプト基礎文法最速マスター https://windows.g.hatena.ne.jp/cx20/20100203/p1 ----------------------------------------------------------------------