バッチファイル入門講義

入門講義【第14章】 バッチファイル内でバッチファイルを呼び出す

ここでは、バッチファイル内でさらに別のバッチファイルを呼び出す方法を紹介します。

プログラムが大規模になってくるとプログラム内でさらにプログラムを呼び出したい場合があります。そんなときは「start」コマンドまたは「call」コマンドを使用します。

第14章 第14章の内容

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

 

「start」コマンドを使う

さっそく使ってみましょう。

「第14章」フォルダの下に、「main.bat」を作成し、以下のように打ち込んで下さい。

バッチファイル「main.bat」の中でバッチファイル「child1.bat」を呼び出しています。

続いて、呼び出す「child1.bat」を以下のように作ります。

単に、「child1が呼び出されました。」と出力して、「child1.bat」が実行されたかを知るためのバッチです。

ただし、プログラムを終了する前に「pause」コマンドをつけています。この「pause」はユーザが何かキーを押すまでその場所で処理を一時停止するコマンドです。このコマンドも使用頻度が高いコマンドなので覚えておきましょう。

 

では、「main.bat」をコマンドプロンプトから実行してみましょう。

別のコマンドプロンプトのウィンドウが開かれそこに「child1が呼び出されました。」と出力されたと思います。

第14章 exec_main.batの実行結果

 

続いて「child1.bat」ファイルをコピーして「child2.bat」と名前を付けます。この中身を、

と編集して下さい。

そして、「main_start.bat」を作り、

とし、二つのバッチファイル(「child1.bat」と「child2.bat」)を呼び出します。

 

実行すると二つのウィンドウが立ち上がり両方の「child」バッチが一気に実行されていることが分かります。

第14章 exec_main_start.batの実行結果

 

注目したいのは、はじめに呼び出した「child1.bat」の中で「pause」によって処理を止めたにも関わらず、「start child2.bat」が実行され二つ目の新しいウィンドが開いているということです。

「main_start.bat」は「start」コマンドで「child1.bat」を呼び出すと、「child1.bat」の実行終了を待たずに、「start child2.bat」を実行したのです。

このように「start」コマンドは呼び出したバッチファイルの終了を待たずに次のコマンドへ移ります

 

「call」コマンドを使う

場合によってはちゃんと「child1.bat」の終了を待ってから「child2.bat」へ処理を移したいときもあるでしょう。

例えば、「child2.bat」のプログラム内で「child1.bat」で作られるファイルを利用する場合などは、ファイルが作られる前に「child2.bat」を実行したくありません。このような場合は「start」コマンドの代わりに「call」コマンドを使います。

「main_call.bat」を作り、

として、実行してみてください。

今度は、新しくウィンドウが立ち上がらず、そのウィンド内で「child1.bat」が実行され「pause」で処理が止まっています。

第14 exec_main_call.batの実行結果

 

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

このように、「call」を使用すると呼び出したバッチの処理が完了するまで次のコマンドには進まないようにすることができます。使用頻度としてはこの「call」コマンドの方が多いように思われます。

 

引数を渡す

これら「start」コマンドと「call」コマンドは引数を取ることができ、呼び出すバッチに文字列を引き渡すことができます。

「main_call2.bat」を作成し、以下のコードを書きます。

「call child_call2.bat」では引数「call2」を指定して、「child_call2.bat」に渡しています。

「child_call2.bat」を以下のように作りましょう。

 

これを実行した結果は次のようになります。

第14章 exec_main_call2.batの実行結果

「%1」に引数で指定した「call2」が入っていることが分かります。

 

呼び出す側のバッチでは以下のように複数の引数を設定できます。

呼び出されたバッチファイル内で複数の引数を取得するには「%1」、「%2」、「%3」…とします。

この例では、「call」コマンドを使用しましたが、「start」コマンドも引数を使用でき、使用方法は同様です。

 

第14章のまとめ

ここでは、バッチファイル内でさらにバッチファイルを呼び出す「start」コマンドおよび「call」コマンドを学びました。

これらは、大規模なバッチファイルを作成するときには必須の機能です。一つのファイルに長々とプログラムのコードを書くのではなく、プログラムを分割していくつかのファイルに分けて書き、必要な場所で「call」コマンドや「start」コマンドを使って呼び出す方が、分かりやすいプログラムになります。

【入門講義 第14章のまとめ】

バッチ内からバッチを呼び出すコマンドを学んだ

  • その1 「start」コマンドは、呼び出したバッチファイルの終了を待たずに、次のコマンドを実行する。
  • その2 一方、「call」コマンドは、呼び出したバッチファイルの終了を待ってから、次のコマンドを実行する。
  • その3 引数も通常のコマンドプロンプトで使用する時と同じように、設定できる。

なにか不明な点やうまくいかない場合は、「お問い合わせフォーム」からお気軽にお問い合わせ下さい。

 

次章はいよいよバッチファイル入門講義の最後のセクションです。いろんなフォルダからファイルを集めるバッチを作っていきます。

第15章 いろんなフォルダからファイルを集める

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


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


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

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


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


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


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


詳しくみる

関連ページ

コメントを残す