什麼會導致 EXE 擴充在命令列中強制執行?

什麼會導致 EXE 擴充在命令列中強制執行?

什麼會導致 EXE 擴充在命令列中強制執行?

我有一條很長的路。 > 2048 個字符,我安裝了一個程序,nodejs 添加到該路徑。然後事情變得有點棘手。我遇到了一個問題,有些人似乎在某些時候遇到了當他們的路徑 > 2048 個字元時遇到的問題。我的大部分道路都被移除了。 (我的路徑中仍然有一些舊的cmd shell,所以這不是一個大問題,所以我將舊路徑保存在一個檔案中)並且windir環境變數在註冊表中得到了(我認為設定為空)。我什至無法打開環境變數視窗(這是當人們的路徑 > 2048 個字元並且丟失了 Windir 變數時可能出現的症狀)。所以我使用 setx 來創建windir=c:\windows,然後打開環境變數視窗並將我的 PATH 固定為原來的樣子。現在我打開的cmd提示視窗就可以了。

但我仍然有一些在我修復它之前的舊cmd提示窗口,並且我知道它們中的路徑被縮短了,並且我知道沒有設置windir變量,但我仍然在它們中看到一個我無法解釋的奇怪結果。我希望能夠從這些 cmd 視窗中修復。

看來我需要將 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提示的方法是永久設定windir,也就是使用setx(然後(前往環境變數視窗並修復路徑)。

我可以修復損壞的 cmd 會話中的路徑,我甚至可以修復該 cmd 會話中的windir,我知道兩者都沒有幫助,但它強制將 EXE 放在檔案名稱末尾。所以我沒有看到原因......或者如何針對特定的 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

順便說一句,有一個很好的環境編輯器:快速環境編輯器

相關內容