こんにちは、阿久梨絵です。
Windows で自動処理を行うときに使われる「バッチファイル」。
その拡張子には .bat と .cmd の2種類があります。
見た目は似ていても、実は動作の違いや使われる環境に微妙な差があるんです。
今回は、そんな「.batと.cmdの違い」について、やさしく解説します。
そもそもバッチファイルとは?
バッチファイルとは、Windowsのコマンドをまとめて自動実行するためのテキストファイルです。
拡張子が .bat や .cmd のファイルをダブルクリックするだけで、複数の処理が順番に実行されます。
.batと.cmdの違い
| 拡張子 | 主な用途・背景 | 特徴・違い |
|---|---|---|
| .bat | MS-DOS時代からの伝統的な形式 | 古い互換性あり。Windows 95/98でも動作可能 |
| .cmd | Windows NT系(2000/XP以降)で導入 | cmd.exe専用。NT系の仕様に忠実で、エラー処理が正確 |
.cmd が使われる環境・理由
1. Windows NT系以降の環境
・.cmd は NT系のコマンドインタープリタ(cmd.exe)専用
・Windows 2000/XP/7/10/11など、NT系以降のOSで安定動作
2. エラー処理や変数の扱いを正確にしたいとき
・.bat では一部のエラーが無視されることがある
・.cmd は サブルーチンやexit /bの動作が正確に反映される
3. PowerShellや他のスクリプトと併用する環境
・.cmd を使うことで「これはcmd.exeで動くスクリプトです」と明示できる
・.bat だと他のツールが誤って解釈する可能性がある場面で .cmd が選ばれる
実例:違いが出るケース
@echo off
call :sub
echo 終了
exit /b
:sub
exit /b 1
・.bat で実行すると echo 終了 が実行される(エラーを無視)
・.cmd で実行すると echo 終了 がスキップされる(エラーを正しく伝播)
→ このように、エラー処理の挙動が異なるため、厳密な制御が必要な場面では .cmd が選ばれます。
まとめ
普段のちょっとした自動化なら .bat で十分。
でも、NT系以降の仕様に忠実に動かしたいときや、エラー処理を正確に扱いたい場面では .cmd が安心です。
見かける頻度は少ないけれど、知っておくと「なぜこの拡張子?」に納得できる──
そんな存在です。
阿久梨絵でした!
