ちょっと興味があるんだけど。当社の「クールな」人々は常に* .cmdを使用しますが、違いを説明できる人はいませんでした。
これが Stackoverflowからの良い議論 です。
それぞれに使用されるコマンド言語には意味的な違いがあります(.bat
ファイルは互換性のあるバージョンを取得します)。これらの一部は、このスクリプトで over here から説明できます。
@echo off&setlocal ENABLEEXTENSIONS
call :func&&echo/I'm a cmd||echo/I'm a bat
goto :EOF
:func
md;2>nul
set var=1
基本的に、 .cmd
ファイルは、MSコマンド言語の最新のセクシーなバージョンを取得します。これが、クールな子供たちが使用する理由です。
ウィキペディアによると:
.bat:マイクロソフトがバッチファイルに使用する最初の拡張子。この拡張機能は、MS-DOSおよびMicrosoft Windowsのほとんどのバージョンを含む、ほとんどのMicrosoftオペレーティングシステムで実行できます。
.cmd:新しい.cmd拡張子は、Windows NTベースのシステムでは「Windows NTコマンドスクリプト」として記述され、役に立ちます。bat拡張子ではなく.cmd拡張子を使用すると、以前のバージョンのWindowsは、コマンドを実行して、COMMAND.COMスタイルファイルのコマンドを誤解したり、コマンド拡張機能がないために新しいスタイルコマンドの実行に失敗したりしないようにします。その結果、スクリプトが部分的にしか実行されず、損傷を与える可能性があります(例:ファイルの正常なコピーの確認に失敗し、元のファイルを削除した場合)。
.cmdファイルと.batファイルの処理の唯一の既知の違いは、.cmdファイルでは、コマンド拡張機能(コマンド拡張機能が有効になっている場合)の影響を受ける正常なコマンドでもERRORLEVEL変数が変更されるのに対し、.batファイルではERRORLEVEL変数が変更されることです。エラー時にのみ変更されます。
お役に立てれば。
理論的には、.cmdはより「真実」です:) .batは古いDOS command.comのスクリプトですが、.cmdはWindows NTのcmd.exeのスクリプトであるため、最後のスクリプトはもう少しスクリプトが改善されています。実際の生活では、Linuxで/ bin/shまたは/ bin/bashを書くように(shが実際にはbashであるディストリビューションを意味します)、通常は両方が同じです。
最初にOS/2で使用されている.cmd形式を見ました。 DOS用語で考えると、ステロイドの.batファイルのようなものです。 .batファイルは、DOSタイプのOSで最初に導入されました。多くの構文は、高度な関数を使い始めるときを除いて、似ています。また、.cmdファイルは16ビット環境(win98)では機能しない可能性がありますが、.batファイルはおそらくすべての環境で機能します。