引数を使ってBatの条件分岐をする

2つの別のバッチをマージする事にしました。
仮にA.batとB.batだったとしてマージしたバッチをAB.batとします。
今まではA.batを実行して、B.batを実行していました。
但しB.batはA.batの処理の間に実行します。
これらのバッチはそれぞれ実行する前に確認のメッセージを表示していました。

:RESTART
SET /P CHECK="処理を実行します。よろしいですか?(1:実行、9:終了):"
IF %CHECK%==9 (
    GOTO END
) 

IF %CHECK%==1 (
    GOTO START
) ELSE (
    GOTO RESTART
)

:START

rem 処理1
call ant task1

:END
pause


ただ単にソースをマージすると2回確認のメッセージが表示されてしまいます。
確認し忘れたら、B.batは確認のところで止まったまんまです。


マージする際の機能の注意点は下記になりました

1. AB.batを実行したら確認メッセージは1回で、B.batは何も聞かれず実行される
2. AB.batの実行時にB.batを実行するか選択できる
3. 今まで通りA.bat、B.batを個別に順番に実行したら、それぞれ1回ずつ確認メッセージが聞かれる
4. B.batは「start」コマンドを使い別スレッドで実行する


単純に片方のbatから上記(実行確認)のソースを削ると確認メッセージが表示されません。
そこで引数を与えてやり、引数の有無で条件分岐をする事にしました。

AB.bat

@ECHO OFF

:RESTART
SET /P CHECK="処理を実行します。よろしいですか?(1:実行(A)、2:実行(A→B)、9:終了):"

IF %CHECK% == 9 (
    GOTO END
)

IF %CHECK% == 2 (
    GOTO START
)

IF %CHECK% == 1 (
    GOTO START
) ELSE (
    GOTO RESTART
)

:START

rem ここからA.batの処理

rem 処理1
call ant task1

rem '2'を選択した場合、B.batを引数有りで呼び出す
IF %CHECK% == 2 (
    start B.bat 1
)

rem 処理2
call ant task2

:END
pause


B.bat

@ECHO OFF

rem 引数を取得
SET CHECK=%1

rem エラーレベルを取得
IF %ERRORLEVEL% == 1 (
    SET CHECK=0
)

IF %CHECK% == 1 (
    GOTO SKIP
)

:RESTART
SET /P CHECK="処理を実行します。よろしいですか?(1:実行、9:終了):"

:SKIP

IF %CHECK% == 9 (
    GOTO END
) 

IF %CHECK% == 1 (
    GOTO END
) ELSE (
    GOTO RESTART
)

:START

call ant task1

:END
pause

batにはノットイコール(<>、!=)がないし、空文字がないのでかなりはまったのですが、
ポイントは「SET CHECK=%1」で引数を取得し
引数を取得出来ない場合は「%ERRORLEVEL%」に「1」が返ってくる事を利用して
適当な数字を代入(上記では'0')。
引数を取得出来た場合はラベルを使って、確認メッセージをスキップします。
これで何とか思い通りのマージが実現出来ました(;^_^A