みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

バッチファイル 複数条件判定方法

いつも大変御世話になっております。

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ではない場合は異常終了のログをはきだす仕組みにしたいのです。

プログラムのどこに問題があるのでしょうか?

バッチファイルにお詳しい方、ご教授願いますでしょうか?

※サンプルがあれば、光栄です。

何卒、宜しくお願い致します。

投稿日時 - 2009-12-06 10:49:41

QNo.5501901

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

> 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%\%

……いやあんまりお勧めの書き方でないですね。

投稿日時 - 2009-12-06 11:03:28

あなたにオススメの質問