Was würde eine obligatorische EXE-Erweiterung in der Befehlszeile zur Folge haben und wie kann dies in der aktuellen Shell aufgelöst werden?
Ich hatte einen langen Pfad > 2048 Zeichen und ich habe ein Programm installiert, nodejs, das diesen Pfad erweitert hat. Und dann lief es etwas schief. Ich hatte ein Problem, das manche Leute anscheinend irgendwann haben, wenn ihr Pfad > 2048 Zeichen lang ist. Der Großteil meines Pfads wurde entfernt. (Ich habe noch einige alte cmd-Shells mit meinem Pfad, also ist das kein großes Problem, daher habe ich meinen alten Pfad in einer Datei gespeichert) Und die Umgebungsvariable Windir wurde (glaube ich) in der Registrierung auf nichts gesetzt. Und ich konnte nicht einmal das Fenster mit den Umgebungsvariablen öffnen (das ist ein Symptom, das auftreten kann, wenn ihr Pfad > 2048 Zeichen lang ist und sie ihre Windir-Variable verlieren). Also habe ich setx zum Erstellen verwendet windir=c:\windows
und das Fenster mit den Umgebungsvariablen geöffnet und meinen PATH auf den ursprünglichen Zustand korrigiert. Und jetzt sind die cmd-Eingabeaufforderungsfenster, die ich öffne, in Ordnung.
Aber ich habe immer noch einige ältere Eingabeaufforderungsfenster von vor der Reparatur, und ich verstehe, dass der Pfad darin verkürzt ist, und ich verstehe, dass keine Windir-Variable festgelegt ist, aber ich sehe immer noch ein bizarres Ergebnis darin, das ich nicht erklären kann. Und das würde ich gerne innerhalb dieser Eingabeaufforderungsfenster reparieren können.
Es scheint, dass ich die EXE nach einer ausführbaren Datei einfügen muss, um sie auszuführen.
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>
Und
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]
Das Lustige ist, dass das Problem für zukünftige Eingabeaufforderungen meiner Meinung nach durch die dauerhafte Einstellung von windir, d. h. mit setx, gelöst wurde (dann bin ich zum Fenster mit den Umgebungsvariablen gegangen und habe den Pfad festgelegt).
Ich könnte den Pfad innerhalb einer kaputten cmd-Sitzung reparieren, ich kann sogar windir in dieser cmd-Sitzung reparieren. Ich weiß, dass beides nicht helfen sollte, aber es macht es zwingend erforderlich, EXE am Ende von Dateinamen zu platzieren. Ich sehe also weder die Ursache noch wie ich es für eine bestimmte cmd-Sitzung reparieren kann.
Neue cmd-Fenster sind in Ordnung. Aber um zu verstehen, was los ist, möchte ich es innerhalb einer kaputten cmd-Sitzung reparieren können. Und wenn nicht, dann würde ich gerne wissen, warum es nicht innerhalb der Sitzung repariert werden kann.
Hinzugefügt
Relevant für Dmitrys Beitrag
C:\Windows\System32>echo %PATHEXT%
%PATHEXT%;.RB;.RBW
Tatsächlich sehe ich, dass .EXE nicht aufgeführt ist, und es ist ein bisschen seltsam, dass %PATHEXT% wörtlich aufgeführt ist. Scheint fast unendlich rekursiv zu sein (wenn DOS dort überhaupt Rekursion / Rekursion verarbeiten könnte, was es nicht tut)!
Antwort1
PATHEXT
Hast du die Umgebungsvariable überprüft ? Sie listet Erweiterungen auf, die als ausführbar gelten. Meine sieht so aus:
PATHEXT=.COM;.EXE;.BAT;.CMD;.LNK;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.AU3
Übrigens, es gibt einen netten Umgebungseditor:Schneller Umgebungseditor