バッチスクリプト内から別のバッチスクリプトを呼び出すにはどうすればよいですか?
if
ステートメントで実行する必要があります。
CALL
を使用します
CALL nameOfOtherFile.bat
これにより、現在のバッチファイルの実行がブロック(一時停止)され、CALL
edが完了するまで待機します。
ブロックしたくない場合は、代わりにSTART
を使用してください。
CmdプロンプトからCALL /?
またはSTART /?
を使用して、詳細を取得します。
コマンドラインで実行しているように、名前でバッチスクリプトを呼び出すことができます。
したがって、bar.bat
というファイルecho This is bar.bat!
があり、ファイルfoo.bat
から呼び出したい場合、foo.bat
でこれを記述できます。
if "%1"=="blah" bar
コマンドラインからfoo blah
を実行すると、以下が表示されます:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
ただし注意:別のバッチスクリプトからバッチスクリプトを呼び出すと、元のバッチスクリプトの実行が停止します。セカンダリバッチスクリプトを実行してから前のバッチスクリプトに戻る場合は、call
コマンドを使用する必要があります。例えば:
if "%1"=="blah" call bar
echo That's all for foo.bat!
その上でfoo blah
を実行すると、以下が表示されます。
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
CALLを使用する必要があります
CALL batch.bat
使用できます
call script.bat
あるいは単に
script.bat
以下に例を示します。
A.batがあります:
@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END
およびa.batから条件付きで呼び出されるb.bat:
@echo off
echo "This is b.bat"
別のウィンドウでバッチファイルを開く場合は、start
を使用します。この方法では、基本的に2つのスクリプトを同時に実行できます。つまり、呼び出したばかりのスクリプトが終了するのを待つ必要はありません。以下のすべての例が機能します。
start batch.bat
start call batch.bat
start cmd /c batch.bat
スクリプトが終了するのを待つ場合は、start /w call batch.bat
を試してください。ただし、batch.batはexit
で終了する必要があります。