EXE 拡張子がコマンド ラインで必須になる原因は何ですか。また、現在のシェルではどのように解決できますか。

EXE 拡張子がコマンド ラインで必須になる原因は何ですか。また、現在のシェルではどのように解決できますか。

EXE 拡張子がコマンド ラインで必須になる原因は何ですか。また、現在のシェルではどのように解決できますか。

パスが長かったです。> 2048 文字で、そのパスに追加するプログラム nodejs をインストールしました。すると、少しおかしなことになりました。パスが > 2048 文字になると、ある時点で一部の人が遭遇すると思われる問題が発生しました。パスの大部分が削除されました。(パスに古い cmd シェルがいくつか残っているので、大きな問題ではないので、古いパスをファイルに保存しました) また、windir 環境変数がレジストリに (何も設定されていないように) 保存されました。環境変数ウィンドウを開くことすらできませんでした (これは、パスが > 2048 文字で windir 変数が失われた場合に発生する症状です)。そこで、setx を使用して作成しwindir=c:\windows、環境変数ウィンドウを開いて、PATH を元の状態に修正しました。これで、開く cmd プロンプト ウィンドウは正常です。

しかし、修正前の古いコマンド プロンプト ウィンドウがまだいくつか残っており、パスが短縮されていることや、windir 変数が設定されていないことは理解していますが、説明できない奇妙な結果がそこに表示されています。そして、それらのコマンド プロンプト ウィンドウ内から修正できるようにしたいと考えています。

実行するには、実行可能ファイルの後に EXE を置く必要があるようです。

C:\crp>path
PATH=C:\Ruby21\bin;C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;C:\Program Files (x86)\Nmap;C:\Program Files (x86)\smartmontools\bin;C:\ProgramData\chocolatey\bin;C:\Users\user\AppData
\Roaming\npm

C:\crp>cd \windows\system32

C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>ping.exe

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
......


C:\Windows\System32>set path=

C:\Windows\System32>ping.exe

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
.....

C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>

そして

C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>set windir=c:\windows

C:\Windows\System32>echo %windir%
c:\windows

C:\Windows\System32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>ping.exe

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]

面白いのは、将来の cmd プロンプトでこの問題を解決したのは、setx (その後 (環境変数ウィンドウに移動してパスを修正するなど) を使用して windir を永続的に設定することだったと思うことです。

壊れた cmd セッション内のパスを修正できます。その cmd セッションで windir を修正することもできます。どちらも実行しないと役立つことはわかっていますが、ファイル名の末尾に EXE を置くことが必須になります。そのため、原因がわかりません。特定の cmd セッションで修正する方法もわかりません。

新しい cmd ウィンドウは問題ありません。しかし、何が起こっているかを理解するために、壊れた cmd セッション内から修正できるようにしたいと思います。そうでない場合は、その中で修正できない理由を知りたいです。

追加した

ドミトリーの投稿に関連する

C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW

確かに、.EXE はリストに載っていませんし、文字どおり %PATHEXT% がそこにリストされているのも少し奇妙です。ほぼ無限に再帰しているように見えます (DOS がそこで再帰 / 再帰を処理できるとすればですが、それはできません)。

答え1

PATHEXT環境変数を確認しましたか? 実行可能とみなされる拡張機能がリストされます。私の環境変数は次のようになります:

PATHEXT=.COM;.EXE;.BAT;.CMD;.LNK;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.AU3

ちなみに、素晴らしい環境エディタがあります:高速環境エディター

関連情報