コマンド別解説

call(バッチファイルやサブルーチンの呼び出し)

>>callのオプション簡易解説へ

目次

 

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

バッチファイル内から別のバッチファイルを呼び出すときには「call」コマンドを使います。使用方法は、「call」コマンドの引数として呼び出したいバッチファイル名を書きます。

実際に使用したバッチファイル例を以下に示します。呼び出す側のバッチファイルを「main.bat」、呼び出される側のバッチファイルを「sub.bat」としましょう。

「main.bat」は以下のようにします。

4行目の「call」コマンドで別のバッチファイル「sub.bat」を呼び出しています。

そして、呼び出される「sub.bat」は、以下の通りです。

ただ、「sub.batの中です。」と表示するだけのバッチファイルです。処理が「sub.bat」の中に入ったことを確認しています。

7行目の「pause」コマンドで、プログラムを一時停止していることに注目して下さい。これは、最後の節「もう一つのコマンド「start」」で紹介する「start」コマンドとの違いについて説明するときに重要になります。

 

では、このバッチファイル「main.bat」を実行してみます。以下、実行結果です。

日付フォーマットを「YYYYMMDD」へ変更する(例 20170628 → 20170628) 「call」コマンドで別のバッチファイルを呼び出す

「sub.bat」が呼び出され、一時停止してから何かキーを押すと、「main.bat」内に戻りプログラムが終了しています。

このように、「call」コマンドでバッチファイルを呼び出すと、プログラムの動きは、

main.bat → sub.bat → main.bat

となります。

 

サブルーチンを呼び出す

「call」コマンドはサブルーチンを呼び出すときにも使えます。

 

サブルーチンについては、「バッチファイルでサブルーチンを使用する -やりたいことから検索-」をご覧下さい。

以下のバッチファイル(call_subroutine.bat)を考えます。

4行目でサブルーチン「subroutine」を呼び出しています。

呼び出すサブルーチンは14行目からであり、その中でメッセージを出力した後一時停止し、メインプログラムに帰ります。

以下、実行結果です。

日付フォーマットを「YYYYMMDD」へ変更する(例 20170628 → 20170628) 「call」コマンドでサブルーチンを呼び出す

バッチファイルを呼び出したときと同様に、サブルーチン「subroutine」が呼び出され一時停止してから何かキーを押すと、メインプログラムに戻りプログラムが終了しています。

すなわち、前節で説明したバッチファイルを呼び出す時と同様に、プログラムの進行は、

メイン → サブルーチン → メイン

という流れです。

 

もう一つのコマンド「start」

バッチファイルやサブルーチンを呼び出すコマンドとして「call」コマンドの他に「start」コマンドというものがあります。この2つのコマンドは使い方は同じで引数に呼び出したいバッチファイルやサブルーチンを指定します。

注意すべきは、「start」コマンドで呼び出しときは、その呼び出したバッチファイルが終了するのを待たずにメインプログラムは先へ進んでしまうことです。

最初の節で使用したバッチファイル「main.bat」(以下にもう一度示す)、

これを「call」ではなく「start」コマンドに変えてみます(main_start.bat)。また、最後に「pause」コマンドを付けたしました。(以下に変更後のバッチファイルを示す)

 

実行すると、別ウィンドウが立ち上がりそこで「sub.bat」が実行され、6行目の「pause」で一時停止しています。つまり、「sub.bat」はまだ終わっていません。

しかし、「main.bat」の方のウィンドウを確認すると、「sub.bat」の終了を待たずに、プログラムが終了しています。

【main_start.bat】
日付フォーマットを「YYYYMMDD」へ変更する(例 20170628 → 20170628) 「start」コマンドで「sub.bat」を呼び出した時の「main.bat」

【sub.bat】
日付フォーマットを「YYYYMMDD」へ変更する(例 20170628 → 20170628) 「start」コマンドで「sub.bat」を呼び出した時の「sub.bat」

このように「start」コマンドでは、その呼び出したバッチファイルが終了するのを待たずにメインプログラムは先へ進んでしまいます

このことを考慮して、2つのコマンド(「call」と「start」)は用途によって使い分けることが必要です。

 

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


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


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

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


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


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


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


詳しくみる

関連ページ

コメント

コメントを残す