Vergleichbares Programm für which (Linux) unter Windows gesucht!
"which" <Programmname> -> Linux; "???" <Programmname> ->Windows
Hallo zusammen,
Gibt es ein Programm unter Windows, dass mir die gleiche Funktionalität wie das Tool which bei Linux gibt?
Ich möchte gerne von meiner Kommandozeile aus in Erfahrung bringen, in welchem Pfad sich ein Programm befindet, das ich starte.
Gruß
Markus
Hallo zusammen,
Gibt es ein Programm unter Windows, dass mir die gleiche Funktionalität wie das Tool which bei Linux gibt?
Ich möchte gerne von meiner Kommandozeile aus in Erfahrung bringen, in welchem Pfad sich ein Programm befindet, das ich starte.
Gruß
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 100520
Url: https://administrator.de/contentid/100520
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
10 Kommentare
Neuester Kommentar
Moin problemsolver,
ein "which.bat" könnte beispielsweise so aussehen
Demo der Mimik am CMD-Prompt (Eingabezeile erkennbar am ">".)
Haken an dieser Variante ist, dass leider der vollständige Such-Name angegeben werden muss (Name incl. Extension.
Schöner wäre natürlich ein "whichwild.bat", der sich mit einem Namen als Parameter zufriedengibt.
Da ich bisher mit dem ersten Ansatz (Name+Ext) leben konnte, habe ich für Anforderung 2 noch nichts.
Wäre aber machbar.
Grüße
Biber
ein "which.bat" könnte beispielsweise so aussehen
@for %%i in ("%~1") do @echo %%~$Path:i
Demo der Mimik am CMD-Prompt (Eingabezeile erkennbar am ">".)
>for %i in ("findstr.exe") do @echo %~$Path:i
C:\WINDOWS\system32\findstr.exe
Haken an dieser Variante ist, dass leider der vollständige Such-Name angegeben werden muss (Name incl. Extension.
Schöner wäre natürlich ein "whichwild.bat", der sich mit einem Namen als Parameter zufriedengibt.
>which findstr
C:\WINDOWS\system32\findstr.exe
Wäre aber machbar.
Grüße
Biber
@Biber
Genügt da nicht (als Ansatz) ein
So viele Typen für ausführbare Dateien gibt's dann ja eigentlich nicht ...
Grüße
bastla
Genügt da nicht (als Ansatz) ein
@for %%e in (exe com bat cmd pif vbs vbe js) do @for %%i in ("%~1.%%e") do @for /f %%a in ("%%~$Path:i") do @echo %%a
Grüße
bastla
@bastla
wenn ich es brauchen würde, dann würde ich sicher schreiben:
... damit es in eine kürzere Zeile passt...
Aber, wie oben geschrieben, eigentlich habe ich es ja noch nie gebraucht.
Grüße
Biber
wenn ich es brauchen würde, dann würde ich sicher schreiben:
@for %%e in (%pathext%) do @for %%i in ("%~1%%e") do @for /f %%a in ("%%~$Path:i") do @echo %%a
Aber, wie oben geschrieben, eigentlich habe ich es ja noch nie gebraucht.
Grüße
Biber
@Biber
@problemsolver: Wozu brauchst Du das eigentlich?
Grüße
bastla
... damit es in eine kürzere Zeile passt...
Ja, heutzutage müssen wir alle sparen wo's nur geht ... eigentlich habe ich es ja noch nie gebraucht.
... und da selbiges auf mich zutrifft, rein interessehalber die Frage@problemsolver: Wozu brauchst Du das eigentlich?
Grüße
bastla
Moin problemmarkus,
Im Unterschied zu den Unix-which-en zeigen die Oneliner oben wirklich nur die gefundenen ausführbaren Dateien im Pfad (bzw im %path%) an.
Wenn Du wissen willst, welche Datei zuerst gefunden wird, müsstest Du eigentlich noch prüfen, ob sich eine derartige Datei eventuell im aktuellen Verzeichnis befindet. Denn die würde ja noch eher "gefunden" werden als eine im %path%.
Kleiner Tipp dazu:
Damit im aktuellen Verzeichnis auch gesucht wird (wie unter Unix-which und vom CMD-Interpreter ja auch) ist es das einfachste, das aktuelle Verzeichnis halt mit im Pfad zu hinterlegen.
Die zweite Variante ist auf Grund der Schlampigkeit der heutigen "Programmierer" ohnehin fast immer gegeben.
Uberprüfung am CMD-Prompt mit;
GROSSE KLAMMER ZU]
Diese kleine Anpassung bewirkt, dass auch im aktuellen Pfad gesucht wird.
Beispiel: Suche nach einer ausführbaren Datei "x":
Grüße
Biber
jedes Vorkommnis der gesuchten ausführbaren Datei im Path auflistet.
Aber kein Oneliner ohne Wermutstropfen:Im Unterschied zu den Unix-which-en zeigen die Oneliner oben wirklich nur die gefundenen ausführbaren Dateien im Pfad (bzw im %path%) an.
Wenn Du wissen willst, welche Datei zuerst gefunden wird, müsstest Du eigentlich noch prüfen, ob sich eine derartige Datei eventuell im aktuellen Verzeichnis befindet. Denn die würde ja noch eher "gefunden" werden als eine im %path%.
Kleiner Tipp dazu:
Damit im aktuellen Verzeichnis auch gesucht wird (wie unter Unix-which und vom CMD-Interpreter ja auch) ist es das einfachste, das aktuelle Verzeichnis halt mit im Pfad zu hinterlegen.
- entweder durch Einfügen von ".;" in den Pfad (also Path=.;%Path% )
- oder dadurch, dass in %PATH% zwei aufeinanderfolgende Semikolons enthalten sind
Die zweite Variante ist auf Grund der Schlampigkeit der heutigen "Programmierer" ohnehin fast immer gegeben.
Uberprüfung am CMD-Prompt mit;
>for %i in ("%path:;=" "%") do @echo %i
"D:\Oracle\instantclient_10_2\Bin"
"C:\WINDOWS\system32"
"C:\WINDOWS"
"C:\WINDOWS\System32\Wbem"
"C:\PROGRA~1\IBM\SQLLIB\BIN"
"C:\PROGRA~1\IBM\SQLLIB\FUNCTION"
"C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL"
"d:\Biber\_1"
"" -----------> hier sind zwei Semikolons hintereinander im Pfad
"D:\Programme\SSH Communications Security\SSH Secure Shell"
"%APPDATA%" -----------> M$-XP-Bug--%APPDATA% wird zu früh in den Pfad geschrieben
----------> und kann nicht aufgelöst werden.
Diese kleine Anpassung bewirkt, dass auch im aktuellen Pfad gesucht wird.
Beispiel: Suche nach einer ausführbaren Datei "x":
>set path=;;%path%
(=20:59:57 D:\temp=)
>@for %e in (%pathext%) do @for %i in ("x%e") do @for /f %a in ("%~$Path:i") do @echo %a
D:\temp\x.bat
D:\temp\x.vbs
Grüße
Biber