バッチスクリプト内からバッチスクリプトを実行するにはどうすればよいですか?


97

バッチスクリプト内から別のバッチスクリプトを呼び出すにはどうすればよいですか?

ifステートメントで実行してほしい。

回答:


219

CALLそのまま使用

CALL nameOfOtherFile.bat

これにより、現在のバッチファイルの実行がブロック(一時停止)され、CALL編集が完了するまで待機します。

ブロックしたくない場合は、START代わりに使用してください。

コマンドプロンプトを使用するCALL /?か、コマンドSTART /?プロンプトから詳細を取得します。


22

コマンドラインで実行しているかのように、バッチスクリプトを名前で呼び出すだけです。

だから、あなたはファイルがあると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!


2

使用できます

call script.bat

あるいは単に

script.bat

5
スクリプト内で別のスクリプトを直接呼び出す場合、呼び出されたスクリプト内のコマンドがゼロ以外の値(エラー)を返す場合、呼び出し先のスクリプトも実行を停止し、を使用callすると、エラーが発生しても実行を継続します呼び出されたスクリプトで。
Bruno Finger

1

次に例を示します。

あなたはa.batを持っています:

@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END

b.batはa.batから条件付きで呼び出されます:

@echo off 
echo "This is b.bat"

1

別のウィンドウでバッチファイルを開く場合は、を使用しますstart。このように、基本的に2つのスクリプトを同時に実行できます。つまり、呼び出したスクリプトが完了するのを待つ必要はありません。以下のすべての例が機能します。

start batch.bat
start call batch.bat
start cmd /c batch.bat

スクリプトの終了を待つ場合は、を試してくださいstart /w call batch.bat。ただし、batch.batはで終わる必要がありexitます。


これらの各スクリプトからのすべてのエラーをメインスクリプトの出力にパイプで戻す方法はありますか?
gunslingor

0

最小化された状態で個別のコマンドウィンドウで並列実行

dayStart.bat

start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat

同じウィンドウで順次実行

release.bat

call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat

-3

ええと、なぜなのかはわかりませんが、呼び出しを行わなかった
call script.batため、元のコンソールに戻りませんでした。
cmd /k script.bat元のコンソールに戻りました。


2
機能していないコードと機能しているコードを含め、機能しなかった機能と機能した機能をより正式に説明するために質問を編集することを検討してください
wundermahn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.