Windows,拡張子を省略して実行した場合の優先順位を確認する

スポンサーリンク

鍛錬 331

Windows,拡張子を省略して実行した場合の優先順位を確認する

コマンドプロンプト等でファイルの拡張子を省略して実行する際に、どの拡張子が優先して実行されるのかを確認するには、PATHEXT を使用します。
 
使用方法は、以下に示す通りです。

echo %PATHEXT%
スポンサーリンク

省略可能な拡張子の優先順位を確認

省略可能な拡張子の種類を確認

以下は、実際に PATHEXT を使用して、私のPC環境における省略可能な拡張子の種類を確認しています。

D:\>
D:\>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

 
上記に示した通り、省略しても実行可能な拡張子の種類を確認することができました。

実行される拡張子の優先度について

また、前述した複数の拡張子は左側の優先度が最も高く、右へ移動しながらファイルが検索されます。

例えば sample.vbs というファイルを、コマンドプロンプトにて sample と実行した場合、以下に示す順序でファイルが検索されます。

  1. .COM
  2. .EXE
  3. .BAT
  4. .CMD
  5. .VBS (この拡張子で実行)
スポンサーリンク

Cプログラム(.exe) と バッチファイル(.bat) で確認

以下は、拡張子の優先度を確認する際に実行する、Cプログラム(.exe)とバッチファイル(.bat)です。

Cプログラム

以下は、Cプログラムの sample.c です。コンパイル後に拡張子が .exe の実行ファイルとなります。

// include
#include <stdio.h>

// main
int main(void)
{
	printf(".exe が実行されました\n");
	
	return 0;
}

バッチファイル

以下は、バッチファイルの sample.bat です。

@echo off

echo .bat が実行されました

exit /b 0
スポンサーリンク

実行結果

ディレクトリに(.bat)しか存在しない場合

以下は、ディレクトリに sample.bat しか存在しない場合に、コマンドプロンプトにて拡張子を省略して実行した場合の実行結果です。

関連記事:Windows,dir を使用する際、ファイル名のみを表示する

D:\tmp>
D:\tmp>dir /B
sample.bat

D:\tmp>sample
.bat が実行されました

 
上記に示した通り、sample.bat が実行されました。

ディレクトリに(.bat)と(.exe)が存在する場合

以下は、ディレクトリに sample.bat と sample.exe が存在する場合に、コマンドプロンプトにて拡張子を省略して実行した場合の実行結果です。

前述した通り、PATHEXT で確認すると .exe のほうが .bat よりも先に記述されていたため、.exe が優先されるはずです。

D:\tmp>
D:\tmp>dir /B
sample.bat
sample.exe

D:\tmp>sample
.exe が実行されました

 
上記に示した通り、sample.exe が sample.bat よりも優先して実行されることが確認できました。

タイトルとURLをコピーしました