web-dev-qa-db-ja.com

Windowsシステムの場合、「。bat」または「.cmd」拡張子はスクリプトに違いをもたらしますか?

私のシェルスクリプトが完全にDOSコマンド(VBSまたはPowerShellコマンドではなくdir、cdなど)に基づいていると仮定すると、その名前に.cmdまたは.bat拡張子を使用すると何かが変わりますか?つまり、.cmdまたは.bat拡張子を使用している場合、同じ方法で同じインタープリターを使用して実行されますか?

5
Diogo

stackoverflow からよく書かれた答えがあります。

したがって、コマンドには影響しません。 ERRORLEVELの処理はまったく異なります。 cmdでは、エラーの有無に関係なくERRORLEVELが設定されます。

バットはエラーがある場合にのみ行います。

から ウィキペディア

ウィキペディアからの新しい引用

.cmdファイルと.batファイルの実行の唯一の既知の違いは、.cmdファイルでは、コマンド拡張機能の影響を受けるコマンドが成功した場合でもERRORLEVEL変数が変更されるのに対し、.batファイルではERRORLEVEL変数が変更されることです。エラー時にのみ変更されます。

上記のウィキペディアの引用のソースは、実際には このニュースグループの投稿 に基づいています。

CMD.EXEに関する限り、.CMDと.BATの違いは次のとおりです。拡張子を有効にすると、.CMDファイルのPATH/APPEND/Prompt/SET/ASSOCは、エラーに関係なくERRORLEVELを設定します。 .BATは、エラーに対してのみERRORLEVELを設定します。

ウィキペディアのテキストよりも違いに関して少し制限があることに注意してくださいが、 Mark Zbikowski 彼自身-という事実を考えると、明示的に言及する価値があります-これは大きな信頼性ボーナスIMHOを与えます。

3
Christian