2010-10-23 4 views
95

Giả sử tôi có một chương trình X.EXE được cài đặt trong thư mục c:\abcd\happy\ trên hệ thống. Thư mục nằm trên đường dẫn hệ thống. Bây giờ giả sử có một chương trình khác trên hệ thống còn được gọi là X.EXE nhưng được cài đặt trong thư mục c:\windows\.Tìm đường dẫn chương trình sẽ thực hiện từ dòng lệnh trong Windows

Có thể nhanh chóng tìm ra từ dòng lệnh nếu tôi nhập X.EXE trong số hai X.EXE sẽ được khởi chạy không? (nhưng không cần phải tìm kiếm hoặc xem chi tiết quy trình trong Trình quản lý tác vụ).

Có thể một số loại lệnh trong xây dựng hoặc một số chương trình có thể thực hiện một việc như thế này? :

detect_program_path X.EXE 
+0

có thể trùng lặp của [Có một tương đương với 'mà' trên dòng lệnh Windows?] (Http://stackoverflow.com/ câu hỏi/304319/là-có-một-tương đương-of-on-the-windows-dòng lệnh) –

Trả lời

171

Sử dụng lệnh where. Kết quả đầu tiên trong danh sách là kết quả sẽ thực hiện.

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

Theo this blog post, where.exe có trong Windows Server 2003 và sau đó, vì vậy đây chỉ nên làm việc với Vista, Win 7, et al.

Trên Linux, tương đương với lệnh which, ví dụ: which ssh.

+2

+1! Tôi không bao giờ biết điều này có thể là một phần của Windows và do đó không nhìn theo hướng đó! :) – Zabba

+1

Bất kỳ tương đương nào cho người dùng xp nghèo? –

+0

@shahar_m: bạn có thử kịch bản dưới đây từ Michael Burr không? Nó không được tích hợp sẵn, nhưng nó có thể làm những gì bạn cần. –

9

Dưới đây là một kịch bản cmd chút bạn có thể sao chép-dán vào một file có tên giống như 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

Khi thread đề cập trong các bình luận, get-command trong PowerShell cũng có thể làm việc nó ra. Ví dụ, bạn có thể gõ get-command npm và đầu ra như sau:

enter image description here