やりたいこと検索

バッチファイルからバッチファイルを呼び出す

 

目次

その他の関連しそうな記事

 

「start」を使ったバッチファイルの呼び出し

ここでは、バッチファイル内でさらに別のバッチファイルを呼び出す方法を紹介します。プログラムが大規模になってくるとプログラム内でさらに別のバッチプログラムを呼び出したい場合があります。そんなときは「start」コマンドまたは「call」コマンドを使用します。

使用方法は、どちらもスペースを挟んで呼び出したいバッチファイルを指定します。

 

初めに「start」コマンドをみていきます。以下のような呼び出し元となる親バッチファイル「main.bat」から子バッチファイル「child1.bat」を呼び出します。

3行目の「start」コマンドでバッチファイル「child1.bat」を呼び出しています。続いて、子バッチファイル「child1.bat」を以下のように作ります。

単に、「child1.bat」が実行されたかを知るためのプログラムとなっています。途中(4行目)に「pause」コマンドをつけていますが、これはユーザーが何かキーを押すまで処理を一時停止するコマンドです。子バッチ「child1.bat」の中に入ったことを知るために付けています。これがないと、子バッチが実行された後、一瞬でウィンドが閉じてしまいます。

以下は、「main.bat」をコマンドプロンプトから実行した結果です。

バッチファイルからバッチファイルを呼び出す 親ファイルの実行(start)

バッチファイルからバッチファイルを呼び出す 呼び出された子バッチファイル(start)

別のウィンドウが開かれ、そこに子バッチ「child1.bat」の実行結果が出力されました。

このように、「start」コマンドで呼び出された子バッチファイルは親バッチファイルとは別に起動し走ります。

続いて「child1.bat」ともう一つ、「child2.bat」新たに作ります。内容は「child1.bat」と同様ですが、「child1」を「child2」に変更します。以下のような内容です。

そして、「main.bat」で2つの子バッチを連続して呼び出します。以下に「main.bat」ファイルの内容を示します。

「start」コマンドで二つのバッチファイルを呼び出しています。

これを、実行すると二つのウィンドウが立ち上がり両方の子バッチが一気に実行されることが確認できます。

バッチファイルからバッチファイルを呼び出す 呼び出された子バッチファイル(start)

バッチファイルからバッチファイルを呼び出す 呼び出された子バッチファイル(start)その2

注意すべきは、「child1.bat」内の「pause」コマンドで処理を止めていたににも関わらず、「start child2.bat」が実行されていることです。このように「start」コマンドは呼び出したバッチファイルの終了を待たずに次のコマンドへ移ります

 

「call」を使ったバッチファイルの呼び出し

「start」コマンドは子バッチの終了を待たずに先へ進むことを確認しました。しかし、場合によってはちゃんと「child1.bat」の終了を待ってから「child2.bat」へ処理を移したいときもあるでしょう。

例えば、「child1.bat」で作られるファイルを、次の「child2.bat」で利用する場合などは、ファイルが作られる前に「child2.bat」を実行できません。

この場合に「call」コマンドを使ってバッチファイルを呼び出します。以下は前節で作成した「main.bat」を「start」コマンドから「call」コマンドに変更したものです。

これを実行すると、新しくウィンドウが立ち上がらず、その親バッチを実行しているウィンド内で「child1.bat」が実行され「pause」コマンドで処理が止まっています。

バッチファイルからバッチファイルを呼び出す 「call」コマンドでバッチファイルを呼び出す

何かキーを押して進めると、続いて「child2.bat」が実行されます。

バッチファイルからバッチファイルを呼び出す 「call」コマンドでバッチファイルを呼び出す(つづき)

このように、「call」を使用すると呼び出したバッチの処理が完了するまで次のコマンドには進みません

 

引数を受け渡す

「start」コマンドと「call」コマンドはどちらも子バッチ(呼び出すバッチファイル)に引数を受け渡すことができます。引数の指定方法は通常のバッチファイル実行時と同様です。

例として、「ウルトラマン」という文字列を「child.bat」に引き渡して、子バッチ(child.bat)内で参照・出力してみます。以下は親バッチファイル「main.bat」です。

「call」コマンドに引数「ウルトラマン」を指定して、「child.bat」に渡しています。「child.bat」を以下のように作ります。

これで、「%1」には引数が入るはずです。これを実行した結果は次のようになります。

バッチファイルからバッチファイルを呼び出す 引数を子バッチに引き渡す

「%1」に「ウルトラマン」が入っていることが分かります。

Windowsバッチファイル初心者へ向けた入門書を作成しました


Windowsバッチファイル初心者の方へ向けた入門書(PDF)を作成しました。


・初めてWindowsバッチファイルを勉強してみようと思っている方

・使ったことはあるが一から基礎を学び直したい方


へ向けて丁寧な解説を行っています。


「全くプログラムを知らない方でも、この入門書を読んだ後には、Windowsバッチファイルの中級者レベルになれるように」をコンセプトに執筆したものです。


この本を読めば、バッチファイルを使ったファイルやフォルダの操作に関しては一通りのことができるようになります。そうなればもう十分中級者と呼べるレベルですので、あとは自分のやりたいことを実現しようとする中で徐々に知識を蓄えていくだけですぐに上級者へなれるでしょう。


詳しくみる

関連ページ

コメント

コメントを残す