EDIT: Tôi nên đã thêm, nếu bạn không thể sử dụng lệnh WHERE từ dấu nhắc lệnh, hãy kiểm tra biến PATH của bạn. (Chỉ cần sử dụng lệnh "path".) Đảm bảo C: \ Windows \ System32 nằm trong đường dẫn của bạn. Đó là nơi "where.exe" được đặt.
WHERE là lệnh bạn đang tìm kiếm! WHERE giống như một giao thoa giữa shell UNIX tích hợp "lệnh" và lệnh "xác định vị trí", trong đó nó hoạt động cho cả hai tệp thực thi lệnh và các tệp thông thường.
Nó cũng hơi phức tạp hơn một trong hai, mặc dù, nói chung là đơn giản
WHERE <file>
sẽ làm việc.
Nó khác với lệnh "định vị" ở chỗ nó không xem qua toàn bộ hệ thống tập tin. Thay vào đó, hành vi mặc định là tìm kiếm các tệp ở hai vị trí:
- Thư mục hiện tại.
- Tất cả các thư mục trong biến PATH.
Vì vậy, bất kỳ lệnh nào bạn có thể chạy trực tiếp từ dấu nhắc lệnh mà không chỉ định thư mục, sẽ được tìm thấy bởi lệnh WHERE. (Bởi vì bất kỳ lệnh nào như thế đã có trong danh sách biến PATH.)
Nếu bạn muốn tìm kiếm chỉ trong biến con đường lệnh, bạn có thể sử dụng:
WHERE "$path:<search text>"
Mặt khác, nếu bạn muốn tìm tất cả các bản sao của một tệp trong cây thư mục, bạn có thể sử dụng:
WHERE /R <Top Level Directory> <search text>
Cuối cùng, WHERE sẽ tìm thấy các lệnh và bất kỳ tệp nào có phần mở rộng từ biến PATHEXT mà không bao gồm phần mở rộng. Tất cả các tệp khác phải được chỉ định chính xác hoặc bằng ký tự đại diện.
Lấy ví dụ các tập tin "dxdiag.exe" và "dxdiagn.dll". Lưu ý lệnh sau và đầu ra của nó:
WHERE /R C:\Windows dxdiag
C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe
Nó thành công trong việc trả về tất cả các phiên bản của "dxdiag.exe" vì ".exe" là một trong những phần mở rộng trong biến PATHEXT. (Lưu ý: "WHERE dxdiag" cũng sẽ hoạt động tốt, vì C: \ Windows \ System32 nằm trong biến PATH.)
WHERE /R C:\Windows dxdiagn
mặt khác, không trả lại bất kỳ kết quả nào, vì "dll" không có trong PATHEXT.
Trong trường hợp này, hãy xem kết quả mà việc thêm ký tự đại diện cho chúng ta:
WHERE /R C:\Windows dxdiagn*
C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll
Nó trả về thành công tất cả các phiên bản của dxdiagn.dll.
Để biết thêm thông tin, sử dụng "WHERE /?". Hi vọng điêu nay co ich!