Programming Field

バッチファイルについて - DOS コマンド一覧

スポンサーリンク

バッチファイル(batch file)はプロンプト上で入力する一連のコマンドを記述したファイルです。バッチファイルのことをバッチプログラムとも呼び、バッチファイルを利用してコマンドを次々に実行することによりアプリケーションプログラムのような動作を提供することもできます。

なお、バッチファイルの拡張子はMS-DOSから「.bat」が使われており、Windows NT系では加えて「.cmd」も使用できます。「.cmd」はコマンドスクリプト(Command Script)とも呼ばれますが、「.bat」と「.cmd」で実行できるコマンドに変わりはありません。

単純なバッチファイル

バッチファイルは、前述の通り一連のコマンドを記述したテキストファイルとなっています。1行に1つ(以上)のコマンドを記述していくことで一連のコマンドを記述していきますが、例えば以下の内容をテキストエディターで入力してファイル「simple.bat」(末尾に「.txt」などを付けない)として保存すると、「simple.bat」はバッチファイルとなり実行することができます。

@echo off
echo バッチファイルです。
pause

「simple.bat」として保存後、プロンプト上で直接「simple.bat」と入力してエンター(実行)するか、エクスプローラー上などで「simple.bat」をダブルクリックして実行すると、

バッチファイルです。
続行するには何かキーを押してください . . .

という表示が行われて入力待ち状態になります。これは、

  1. @echo off」によってエコーバック(「C:\>」などの表示)をオフにする(※ 「@」はコマンドの前につけるとそのコマンドのエコーバックを抑制します。ここでは「@」がないと「echo off」というコマンドが画面上に見えてしまいます。)
  2. echo バッチファイルです。」によって画面に「バッチファイルです。」を出力する
  3. pause」によってシステムが持つメッセージ「続行するには何かキーを押してください . . .」を出力して入力待ち状態にする

という処理を自動的に(順番に)実行した結果となります。なお、Pauseによる入力待ちで何かキーを入力すると次に進みますが、「simple.bat」はこれ以上コマンドが記述されていないため、そこで実行終了となります。

※ 一連のコマンドをまとめて実行するような処理を一般的に「バッチ処理」と呼びます(「バッチファイル」は「バッチ処理を行うファイル」という意味です)。

バッチファイルの目的

バッチファイルは多くの場合「処理を楽したい」というときに用いられます。例えば「あるファイルXに対してCmdAを実行し、その結果生成された特定のファイルに対してCmdBを実行する」という処理を何度も行うことがある場合、以下のようにバッチファイルとしてその一連の処理を書いておけば、バッチファイルを実行するだけでその処理を実行することができます。

@echo off
set TEMP_X=%1
set TEMP_Y=output.tmp
CmdA %TEMP_X% %TEMP_Y%
if exist %TEMP_Y% CmdB %TEMP_Y%
if exist %TEMP_Y% del %TEMP_Y%
set TEMP_X=
set TEMP_Y=

※ コマンドプロンプト用のバッチファイルとして記述する場合、ファイル名はスペース文字が入ることを考慮して「" "」で括って扱うことを推奨します。例えば以下のように書き換えます(完全な書き換えではありません)。

@echo off
set "TEMP_X=%~f1"
set "TEMP_Y=%~dp1output.tmp"
CmdA "%TEMP_X%" "%TEMP_Y%"
if exist "%TEMP_Y%" CmdB "%TEMP_Y%"
if exist "%TEMP_Y%" del "%TEMP_Y%"
set TEMP_X=
set TEMP_Y=

複数のコマンドを扱う際、「特定の条件にあてはまる場合にのみプログラムやコマンドを実行したい」という場合もありますが、上記の例にもあるようにIfコマンドなどを用いることで、そのような処理も自動的に制御することができます。

バッチファイルの便利な使い方

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

Callコマンドを用いることでバッチファイル内から別のバッチファイルを実行することができます。これにより、バッチファイルが複数存在する状況で共通の処理を1つのバッチファイルにまとめ、個々のバッチファイルのサイズを軽減させたり、バッチファイルをメンテナンスしやすくしたりすることができます。

注意点として、Callコマンドを用いずにバッチファイルを実行すると、元のバッチファイルはそこで処理が終了するという仕様があります。バッチファイルからバッチファイルを実行する場合は、特別な場合を除いてCallを付けることを意識する必要があります。

ドラッグ&ドロップで呼び出す

Windowsにおいてバッチファイルを作成すると、エクスプローラー上では他のアプリケーション(実行可能ファイル)と同様に、任意のファイルをドラッグしてバッチファイルにドロップすることができます。

この場合、バッチファイルはドロップされたファイルのフルパス(絶対パス)が引数として指定された状態で実行されるため、バッチファイルを引数付きで実行するためにコマンドプロンプトからファイル名を手入力する必要がなくなります。

さらに、バッチファイルに対してショートカットを作成し、そのショートカットの「リンク先」にバッチファイルで解析される引数をあらかじめ付加しておくと、そのショートカットにファイルをドロップすれば「あらかじめ付加した引数」と「ドロップしたファイルのパス」を結合した引数でバッチファイルが実行されます。

環境変数をセットする

環境変数はプログラムやバッチファイルから使用できる「設定」情報の一種です。あるプログラムが特定の環境変数を参照する際、その環境変数の内容を状況によって変える必要があるときにバッチファイルが利用できます。

具体的には、バッチファイルで一通り環境変数を設定する処理(Setコマンド)を記述し、そのあとにプログラムを実行する処理を記述すれば、バッチファイル内で設定した環境変数の内容がプログラムに反映されます。ここで設定した内容はシステム設定の内容を上書きするため、普段は直接プログラムを実行してシステム設定を利用し、特定の条件を使う場合はバッチファイル経由でプログラムを実行して挙動を変える、といった使い方ができます。

バッチファイルのその他の特徴