2010-10-23 6 views
95

ausgeführt wird Angenommen, ich habe ein Programm X.EXE im Ordner c:\abcd\happy\ auf dem System installiert. Der Ordner befindet sich im Systempfad. Angenommen, es gibt ein anderes Programm auf dem System, das auch X.EXE heißt, aber im Ordner c:\windows\ installiert ist.Suchen des Pfads des Programms, das von der Befehlszeile in Windows

Ist es möglich, schnell aus der Befehlszeile herauszufinden, dass, wenn ich X.EXE eingeben, welche der beiden X.EXE wird gestartet werden? (aber ohne die Prozessdetails im Task-Manager suchen oder ansehen zu müssen).

Vielleicht eine Art eingebauter Befehl, oder etwas Programm da draußen, das so etwas tun kann? :

detect_program_path X.EXE 
+0

Mögliche Duplikat [Gibt es ein Äquivalent von ‚die‘ auf der Windows-Kommandozeile?] (Http://stackoverflow.com/ Fragen/304319/is-da-ein-gleich-von-welcher-auf-der-Windows-Kommandozeile) –

Antwort

171

Verwenden Sie den Befehl where. Das erste Ergebnis in der Liste ist dasjenige, das ausgeführt wird.

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

Nach this blog post, where.exe wird mit Windows Server 2003 und höher enthalten, so sollte dies nur mit Vista arbeiten Win 7, et al.

Unter Linux ist das Äquivalent der Befehl which, z. which ssh.

+2

+1! Ich habe nie gewusst, dass dies ein Teil von Windows sein könnte, und schaute daher nicht in diese Richtung! :) – Zabba

+1

Irgendwelche Entsprechung für die armen XP-Benutzer? –

+0

@shahar_m: Hast du das folgende Skript von Michael Burr probiert? Es ist nicht eingebaut, aber es könnte tun, was Sie brauchen. –

9

Hier ist eine kleine cmd Skript Kopieren-n-Paste in eine Datei mit dem Namen etwas wie where.cmd:

@echo off 
rem - search for the given file in the directories specified by the path, and display the first match 
rem 
rem The main ideas for this script were taken from Raymond Chen's blog: 
rem 
rem   http://blogs.msdn.com/b/oldnewthing/archive/2005/01/20/357225.asp 
rem 
rem 
rem - it'll be nice to at some point extend this so it won't stop on the first match. That'll 
rem  help diagnose situations with a conflict of some sort. 
rem 

setlocal 

rem - search the current directory as well as those in the path 
set PATHLIST=.;%PATH% 
set EXTLIST=%PATHEXT% 

if not "%EXTLIST%" == "" goto :extlist_ok 
set EXTLIST=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 
:extlist_ok 

rem - first look for the file as given (not adding extensions) 
for %%i in (%1) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i 

rem - now look for the file adding extensions from the EXTLIST 
for %%e in (%EXTLIST%) do @for %%i in (%1%%e) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i 
0

Als thread im Kommentar erwähnt, get-command in Powershell kann es auch funktionieren. Zum Beispiel können Sie get-command npm und der Ausgang geben, wie unten:

enter image description here

Verwandte Themen