拡張子を省略しても実行できるワケ

DOSプロンプトでは、 exeの実行ファイルや、 batのバッチファイルは、 拡張子を省略しても実行することができます。

省略して実行できる拡張子は 環境変数 PATHEXT で、定義されています。 コマンドプロンプトで、以下のように打って調べます。

C:\>SET PATHEXT
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

SET は、 環境変数を設定・参照するコマンドです。 引数に環境変数名を付けると、その値を表示することができます。 引き数を付けないと、全ての環境変数と値を表示します。

以下のように拡張子だけ違うファイルがある場合、 ファイル名だけで実行すると、 環境変数 PATHEXT で 定義されている順番で実行します。

C:\>DIR /A:A /B
test.bat
test.vbs
test.wsh

C:\>test
I'm test.bat!  ← test.bat が実行された

この場合、test.com(無い)→ test.exe(無い)→ test.bat(有る)の順番で探します。 もし、test.bat を削除すると、次の検索順の test.vbs が実行されるわけです。

新しく省略したい拡張子がある場合は、この環境変数 PATHEXT に 追加すると、拡張子なしで実行できるようになります。

ちなみに検索するパス(場所)は、環境変数 PATH に 定義されている順番です。 つまり、PATH で定義されている検索するパスの順番に、 PATHEXT で定義されている拡張子の順番で探していくわけです。

Google サイト内検索

Amazonアソシエイト