標準のコマンドプロセッサであるcmd.exeは、バッチの実行プロセッサにもなっている。コマンドをキー入力として受け付けて実行するのがコマンドプロセッサの役割で、ファイルから複数のコマンドを受け付けて実行するのもほぼ同じ仕組みだからだ。

 cmd.exeの「コマンド」には、実行ファイルであるコマンドプログラム(コンソールからの利用を想定したWindowsのデスクトップアプリケーション。慣習により外部コマンドと呼ばれることもある)と、cmd.exe自身が実行する「内部コマンド」がある。内部コマンドには、複数のコマンドを順次処理する「バッチファイル」(拡張子が.bat)内で、条件判断や繰り返しを行う制御用のコマンドもある(図1)。

図1●汎用的な外部コマンドと内部コマンドについてはHELPコマンドで一覧を表示できる
図1●汎用的な外部コマンドと内部コマンドについてはHELPコマンドで一覧を表示できる
[画像のクリックで拡大表示]

 バッチ処理では、内部コマンドや外部コマンドを単に1行に1つ書いて並べたものが順次実行される。外部コマンドはフルパスを指定する必要があるが、path環境変数で定義しているパスにある実行ファイルは、フルパスの記述は不要で単に実行ファイル名を並べればよい。実行ファイルを意味する拡張子(.exe)の指定も不要だ。

 コマンドプログラムをエクスプローラーなどから直接指定すると、実行が終わったあと、コマンドウインドウ(conhost.exe)は閉じてしまう。この場合、cmd.exeの内部コマンドである「pause」を使ったバッチファイルを作り、これをcmd.exeに実行させる。

 具体的には、以下のような内容を持つテキストを作り、拡張子を.batにして保存する。Windowsに付属する「メモ帳」を開いて、以下のテキストを入力する。先頭の行に実行したいコマンドを入れる。ここではネットワーク関連の情報を表示する「ipconfig」を記述している。

ipconfig /all
pause