112

Nói rằng 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ũng được gọi là X.EXE nhưng được cài đặt trong thư mục c:\windows\.

Có thể nhanh chóng tìm ra từ dòng lệnh rằng nếu tôi nhập vào X.EXEcái nào trong hai X.EXEcái đó sẽ được khởi chạy không? (nhưng không phải tìm kiếm trực tiếp 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 được xây dựng, hoặc một số chương trình ngoài đó có thể làm một cái gì đó như thế này? :

detect_program_path X.EXE
|
209

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

C: \> nơi ghi chú
C: \ Windows \ System32 \ notepad.exe
C: \ Windows \ notepad.exe

Theo bài đăng trên blog này , where.exeđược bao gồm trong Windows Server 2003 trở lên, vì vậy điều này chỉ nên hoạt động với Vista, Win 7, et al.

Trên Linux, tương đương là whichlệnh, vd which ssh.

|
  • 1

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

    – Tạ Quốc Thiện 06:45:29 23/10/2010
  • 1

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

    – Hoàng Đan Linh 12:23:27 28/04/2011
  • 1

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

    – Tạ Vũ Uy 17:19:35 28/04/2011
  • 1

    @Kenny: Giả sử bạn biết tên của DLL, bạn có thể sử dụng tiện ích ListDLLs ( technet.microsoft.com/en-us/sysi INTERNals / bb896656 ). Từ dòng lệnh, chỉ cần chạy listdlls -d foo.dllđể xem tất cả các quy trình có mô-đun được tải và đường dẫn đầy đủ đến mô-đun được tải. Ngoài ra, bạn chỉ có thể thực hiện tìm kiếm tệp Windows cho tên tệp.

    – Lý Khánh Đạt 23:37:44 18/11/2015
  • 1

    @Kenny: Những gì bạn đang yêu cầu rất khác với câu trả lời được đăng ở đây. Bạn nên tạo một câu hỏi Stack Overflow mới với những nghiên cứu bạn đã thực hiện và đăng một liên kết đến nó trong những bình luận này.

    – Ngô Mai Nhi 16:12:05 19/11/2015
9

Đây là một đoạn script cmd nhỏ mà bạn có thể sao chép-n-paste vào một tệp có tên 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
|
3

Như chủ đề được đề cập trong bình luận, get-commandtrong powershell cũng có thể giải quyết nó. Ví dụ: bạn có thể nhập get-command npmvà đầu ra như sau:

|
  • 1

    (get-command npm).Sourcesẽ trả lời chỉ với đường dẫn đến npm (ví dụ) thay vì toàn bộ bảng của tất cả các thuộc tính.

    – Trịnh Thanh Sơn 20:48:56 23/04/2019

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.