Suche nach ausführbaren Dateien außer PATH

3261
ripper234

Ich habe eine cmd geöffnet (Windows 7) und tippe "java.exe" ein. Das System findet die ausführbare Datei unter c: \ program files \ java \ jre6 \ bin.

Dieser Ordner befindet sich jedoch nicht im Pfad. Welche anderen Mechanismen beeinflussen die Exe-Suche?

3
Gibt es eine Variable wie JRE_HOME, JAVA__HOME in Ihrem Pfad, die auch ausgeführt werden kann ukanth vor 15 Jahren 0

2 Antworten auf die Frage

14
Joshua

Ab Vista und höher enthält Windows jetzt ein Dienstprogramm namens where. Dieses Programm funktioniert genau so, wie Sie es von einem Unix-Gegenstück erwarten würden (ich bin froh, dass sie es hinzugefügt haben!)

Verwendungszweck:

C:\>where java C:\Windows\System32\java.exe 

Was noch schöner whereist, ist, dass es Ihnen alle ausführbaren Dateien zeigt, die es in Ihrem Pfad findet. Wenn Sie java.exe ebenfalls in C: \ Windows installiert hätten, würde es unter dem Verzeichnis \ System32 \ angezeigt .

BEARBEITEN

Ich dachte mir, ich würde auch eine Option für XP-Benutzer hinzufügen, die die Funktionalität ohne Tools von Drittanbietern wünschen. Raymond Chen schrieb ein Befehlsskript in einem 90-Byte-Programm "whereis" . Es ist ein schöner Liner, der die gleiche Aufgabe erfüllt!

@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i 

Speichern Sie das obige Skript in einer .bat- oder .cmd-Datei, und Sie können es von der Befehlszeile aus mit dem Dateinamen als Argument starten. Es funktioniert genau so, wie Sie es erwarten! (Beachten Sie, wenn Sie die Skriptversion verwenden, lassen Sie die Erweiterung weg, da sie alle ausführbaren Erweiterungen für Sie durchsucht.)

+1 Bevorzugen Sie immer eine native Lösung "wo" möglich :) Phoshi vor 15 Jahren 2
+1; Ich wusste noch nie von diesem Befehl! (Und ich habe immer gedacht, dass ich mit der Kommandozeile ziemlich praktisch war!) John Rudy vor 15 Jahren 0
+1 für neu zu mir. Es funktioniert ähnlich wie der Befehl `find` in Unix (anders als der Befehl` find` in DOS oder Windows). Sie können zum Beispiel `where -r \ Benutzer \ Benutzername \ Dokumente * .xl *` ausführen. Dennis Williamson vor 15 Jahren 0
+1 danke für das XP-Skript - ich habe es als "where.bat" gespeichert und es funktioniert genauso wie Vista! :) Bohemian vor 12 Jahren 0
Das * nix-Äquivalent lautet "welches". Das "Wo" ist ein Skript über Redhat, vielleicht für Leute, die vergessen, dass es "Was" auf * Nix ist barlop vor 10 Jahren 0
2

Es gibt eine Kopie von java.exe in c: \ windows \ system32 (dies ist ein Pfad, der in den Umgebungsvariablen definiert ist). Dies ist diejenige, die angezeigt wird, wenn Sie an der Eingabeaufforderung java.exe eingeben, nicht unter c: \ program files \ java \ jre6 \ bin.

Du sagst nicht. Ich habe versucht, "which.exe" zu benutzen, um es zu finden, tat es aber nicht. ripper234 vor 15 Jahren 0
funktioniert bei mir. welche verwendest du? quack quixote vor 15 Jahren 0
Meiner ist Cygwins, welcher und welcher Java die Java.exe in / system32 befallen hat, also kann das, was Sie verwenden, verwirrt sein. Phoshi vor 15 Jahren 2
gnuwin32 ist was. ripper234 vor 15 Jahren 0
cygwin was auch hier. (Hexe Haar 2?) quack quixote vor 15 Jahren 0