• ベストアンサー

BAT・CMD 違いは?

同じバッチファイルの拡張子ですが,.batと.cmd(WinNT系のみ)の違いはいったい何なのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.3

>同じWinXPで,batの中にWinコマンドを記述し,cmdの中にDOSコマンドを >記述したとしても,全く問題なく動きますよね? 動きます。中身がプレーンテキストである以上、拡張子では判別できません。 batとcmdのどちらにどのように書いても問題ありません。 さて、このように書きましたがcmdの中にDOSコマンドをと書いてあるにを見ると まだ、よく把握されていない点があるようなので述べておきます。 WinXPにMS-DOSコマンドはありません。全てWindowsコマンドです。 慣例的にDOSコマンドと呼んでいますが、前の回答でも述べたように XPのコマンドは混乱がないようにMS-DOSコマンドを踏襲しているだけです。 したがって互換性の関係で一部動く16bitのDOSコマンドもありますが、 MS-DOSのコマンドをコピーして持ってきても動く保証はありません。 ここのところを勘違いしていると困るので補足しておきます。

noname#81135
質問者

お礼

分かりました。ウインドウズコマンドの事等以外な実態もあって驚きました。少し勘違いしていたようなのでここで知っておいてよかったです。ありがとうございました。

その他の回答 (2)

  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.2

batもcmdも中身がテキストなのであまり変わりません。 差し当たって述べるならbatはDOSコマンド、cmdはWindowsコマンドといったところです。 ご存じのように9x系まではMS-DOSを最初にブートし、次にWindowsをブートしていました。 batに記述されるコマンドラインはMS-DOSコマンドです。 対してNT系のコマンドプロンプトに記述するコマンドラインは純粋にWindowsコマンドです。 (この部分は混乱がないようにMS-DOSに似せてあります) 両者は違うよと意識的に示したのがbatとcmdの違いです。 後は優先順位の順番が挙げられると思います。 環境変数PATHEXTには bat、cmdの順で書かれておりbatの方が優先です。 従って同一フォルダ内にa.batとa.cmdがあった場合、a.batが実行されます。

noname#81135
質問者

補足

解答ありがとうございます。batは純粋なMS-DOSのコマンドで,cmdはWindows用に拡張したコマンドを含んだバッチを区別するための拡張子と判断してよいでしょうか。ただ例えば,同じWinXPで,batの中にWinコマンドを記述し,cmdの中にDOSコマンドを記述したとしても,全く問題なく動きますよね?

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.1

同一のようです。Microsoftとしては使い分けてもらう意図があったんだと思いますが、失敗してます。 失敗しているというのは、例えば、Win9x系でもWinNT系でも動く仕組みを作るとして、Win9x用にgo.batを、WinNT用にgo.cmdを用意しておき、go と打つとWin9xならgo.batが動き、WinNTだとgo.cmdが動く・・・ということが出来ると、きっとcmdの拡張子も使われたんでしょうけど、実際にはWinNT系でもgo.batが動きます(初期設定のままの場合)。なので、go.batの中で%OS%等をみて判断し分けないといけないわけで、みんなbatを使い続けたと言うことでしょうね。

noname#81135
質問者

お礼

協力ありがとうございました。

関連するQ&A