目次
その他の関連しそうな記事
「start」を使ったバッチファイルの呼び出し
ここでは、バッチファイル内でさらに別のバッチファイルを呼び出す方法を紹介します。プログラムが大規模になってくるとプログラム内でさらに別のバッチプログラムを呼び出したい場合があります。そんなときは「start」コマンドまたは「call」コマンドを使用します。
使用方法は、どちらもスペースを挟んで呼び出したいバッチファイルを指定します。
1 2 |
start [呼び出したいバッチファイル] call [呼び出したいバッチファイル] |
初めに「start」コマンドをみていきます。以下のような呼び出し元となる親バッチファイル「main.bat」から子バッチファイル「child1.bat」を呼び出します。
1 2 3 |
@echo off start child1.bat |
3行目の「start」コマンドでバッチファイル「child1.bat」を呼び出しています。続いて、子バッチファイル「child1.bat」を以下のように作ります。
1 2 3 4 5 |
@echo off echo child1が呼び出されました。 pause echo child1を終了します。 |
単に、「child1.bat」が実行されたかを知るためのプログラムとなっています。途中(4行目)に「pause」コマンドをつけていますが、これはユーザーが何かキーを押すまで処理を一時停止するコマンドです。子バッチ「child1.bat」の中に入ったことを知るために付けています。これがないと、子バッチが実行された後、一瞬でウィンドが閉じてしまいます。
以下は、「main.bat」をコマンドプロンプトから実行した結果です。
別のウィンドウが開かれ、そこに子バッチ「child1.bat」の実行結果が出力されました。
このように、「start」コマンドで呼び出された子バッチファイルは親バッチファイルとは別に起動し走ります。
続いて「child1.bat」ともう一つ、「child2.bat」新たに作ります。内容は「child1.bat」と同様ですが、「child1」を「child2」に変更します。以下のような内容です。
1 2 3 4 5 |
@echo off echo child2が呼び出されました。 pause echo child2を終了します。 |
そして、「main.bat」で2つの子バッチを連続して呼び出します。以下に「main.bat」ファイルの内容を示します。
1 2 3 4 |
@echo off start child1.bat start child2.bat |
「start」コマンドで二つのバッチファイルを呼び出しています。
これを、実行すると二つのウィンドウが立ち上がり両方の子バッチが一気に実行されることが確認できます。
注意すべきは、「child1.bat」内の「pause」コマンドで処理を止めていたににも関わらず、「start child2.bat」が実行されていることです。このように「start」コマンドは呼び出したバッチファイルの終了を待たずに次のコマンドへ移ります。
「call」を使ったバッチファイルの呼び出し
「start」コマンドは子バッチの終了を待たずに先へ進むことを確認しました。しかし、場合によってはちゃんと「child1.bat」の終了を待ってから「child2.bat」へ処理を移したいときもあるでしょう。
例えば、「child1.bat」で作られるファイルを、次の「child2.bat」で利用する場合などは、ファイルが作られる前に「child2.bat」を実行できません。
この場合に「call」コマンドを使ってバッチファイルを呼び出します。以下は前節で作成した「main.bat」を「start」コマンドから「call」コマンドに変更したものです。
1 2 3 4 |
@echo off call child1.bat call child2.bat |
これを実行すると、新しくウィンドウが立ち上がらず、その親バッチを実行しているウィンド内で「child1.bat」が実行され「pause」コマンドで処理が止まっています。
何かキーを押して進めると、続いて「child2.bat」が実行されます。
このように、「call」を使用すると呼び出したバッチの処理が完了するまで次のコマンドには進みません。
引数を受け渡す
「start」コマンドと「call」コマンドはどちらも子バッチ(呼び出すバッチファイル)に引数を受け渡すことができます。引数の指定方法は通常のバッチファイル実行時と同様です。
1 2 |
start [呼び出すバッチファイル] [第1引数] [第2引数] ... [第9引数] call [呼び出すバッチファイル] [第1引数] [第2引数] ... [第9引数] |
例として、「ウルトラマン」という文字列を「child.bat」に引き渡して、子バッチ(child.bat)内で参照・出力してみます。以下は親バッチファイル「main.bat」です。
1 2 3 |
@echo off call child.bat ウルトラマン |
「call」コマンドに引数「ウルトラマン」を指定して、「child.bat」に渡しています。「child.bat」を以下のように作ります。
1 2 3 4 5 |
@echo off echo %1が引き渡されました。 pause |
これで、「%1」には引数が入るはずです。これを実行した結果は次のようになります。
「%1」に「ウルトラマン」が入っていることが分かります。
コメント