バッチファイルの拡張子
コマンドプロンプトを活用することで、コンピュータ上での特定の操作を、コマンドラインから実行することができます。
コマンドプロンプトから直接コマンドを入力して実行することもできますが、複数のコマンドをまとめて実行するためには、バッチファイルを作成することが有効です。
コマンドプロンプト上で動作する一連のコマンドを記述し、ダブルクリック、もしくはコマンドプロンプト上で実行することで、記述したコマンドを一括で実行することができます。
バッチファイルの拡張子には、.batと.cmdの 2 種類があります。
どちらも現在の Windows では普通に見かけますが、由来と想定している実行環境が少し異なります。
バッチファイルについて
前述した拡張子.bat、.cmdのファイルは、いずれもコマンドプロンプト上で動作するコマンドを記述するためのものです。
ダブルクリックして起動した場合、コマンドプロンプトが起動し、記述したコマンドが一括で実行されます。
多くの場合、以下のようなウィンドウが一瞬立ち上がり、すぐに閉じることがあります。これは、バッチファイルの実行が完了したことを示しています。
意図的にユーザーからの入力を待機するようなコマンドを含まない限り、このような動作が一般的です。
.batと.cmdの違い
.batは MS-DOS 時代から使われてきた拡張子で、.cmdは Windows NT 系で導入された拡張子です。
Windows 10 / 11 では、どちらも通常はcmd.exeで実行され、基本的なバッチ構文もほぼ同じように書けます。
| 項目 | .bat | .cmd |
|---|---|---|
| 由来 | MS-DOS 時代から | Windows NT 系で導入 |
| 実行するプログラム | cmd.exe | cmd.exe |
| 基本構文 | ほぼ共通 | ほぼ共通 |
| 一部コマンド成功時の ERRORLEVEL | 変化しないことがある | 必ず更新される |
動作上の違いは ERRORLEVEL
実際に動作が異なる代表例が、終了コード(ERRORLEVEL)の扱いです。
PATH、SET、ASSOC、FTYPEなど一部のコマンドは、.cmdでは成功時にもERRORLEVELを更新(0に)しますが、.batでは成功しても以前の値が残ることがあります。
ERRORLEVELでエラー判定をするバッチファイルでは、この差が原因で挙動が変わる場合があります。詳しくは関連記事「ERRORLEVEL の使い方」を参照してください。
.cmd は Windows NT 系の拡張子のため、MS-DOS や Windows 95/98/Me
などの環境では実行できません。現在の Windows のみが対象であれば、気にする必要はありません。
どちらを使えばよい?
迷った場合は、次の基準で選べば問題ありません。
- 現在の Windows 専用で、
cmd.exe向けのスクリプトであることを明示したい →.cmd - 既存の運用や過去の資料が
.batで統一されている →.bat
配布先が現在の Windows に限られるなら、.cmd
を選んでも問題ありません。一方で、社内の既存運用や過去の資料に .bat
が多い環境では、拡張子を合わせた方が読者や運用担当者に伝わりやすいことがあります。
拡張子を変更するには
メモ帳などで保存した.txtファイルを、バッチファイルとして使うには拡張子を変更します。
エクスプローラーの「表示」から「ファイル名拡張子」を有効にして、ファイル名をsample.batまたはsample.cmdに変更してください。拡張子が表示されていないと、実際のファイル名がsample.bat.txtになってしまうことがあるため注意が必要です。
作成手順の詳細は、関連記事「バッチファイルの作り方と実行方法」を参照してください。バッチファイルを保存する際の文字化けについては、文字化けの解説記事で解説しています。