.batと.cmd── Windows のバッチファイル、拡張子の違いと使い分け

こんにちは、阿久梨絵です。
Windows で自動処理を行うときに使われる「バッチファイル」
その拡張子には .bat.cmd の2種類があります。
見た目は似ていても、実は動作の違いや使われる環境に微妙な差があるんです。

今回は、そんな「.batと.cmdの違い」について、やさしく解説します。

そもそもバッチファイルとは?

バッチファイルとは、Windowsのコマンドをまとめて自動実行するためのテキストファイルです。
拡張子が .bat や .cmd のファイルをダブルクリックするだけで、複数の処理が順番に実行されます。

.batと.cmdの違い

拡張子主な用途・背景特徴・違い
.batMS-DOS時代からの伝統的な形式古い互換性あり。Windows 95/98でも動作可能
.cmdWindows 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 が安心です。

見かける頻度は少ないけれど、知っておくと「なぜこの拡張子?」に納得できる──
そんな存在です。
阿久梨絵でした!

上部へスクロール
Verified by MonsterInsights