Câu trả lời:
Lệnh where thực hiện những gì bạn muốn và quay lại ít nhất với bộ tài nguyên cho Windows 98 và được bao gồm theo mặc định trong Server 2003, Vista và mới hơn:
C:\>where csc
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe
Nếu được thực thi mà không có đối số (trên Vista), nó sẽ dẫn đến một trong những thông điệp yêu thích của tôi:
C:\>where
ERROR: The operation completed successfully.
Nếu thực thi trong PowerShell, hãy đảm bảo bao gồm '.exe' để phân biệt với bất kỳ bí danh 'trong đó' hoặc tập lệnh dọc theo đường dẫn. ('where' là bí danh điển hình cho Where-Object.ps1)
C:\> where.exe where.exe
C:\Windows\System32\where.exe
where
chỉ trả lại trợ giúp sử dụng ngay bây giờ trong Windows 7. Muốn tự mình xem nó: p
where
không khả dụng trong XP
tin tặc nào.cmd:
@echo off
@set PATH=.;%PATH%
@rem
@rem about: something similar like the unix-alike-which, but with
@rem within pure cmd
@rem
if "%1" == "" (
@echo Usage:
@echo.
@echo which 'cmd'
@echo.
@echo.if 'cmd' is not found, ERRORLEVEL is set to 1
@echo.
) else (
( @for %%f in (%1 %1.exe %1.cmd %1.bat %1.pif) do if not "%%~$PATH:f" == "" ( @echo %%~$PATH:f ) else @set ERRORLEVEL=1)
)
Vui lòng sử dụng lệnh where :
> where app.exe
Đó là cách tốt nhất để đạt được mục tiêu của bạn.
Bạn cũng có thể sử dụng lệnh PowerShell:
> $env:path.Split(';') | gci -Filter app.exe
và phiên bản mở rộng trông như thế này:
> $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe
Ở đâu đó "ngoài kia" tôi tìm thấy tập tin này whereis.bat
:
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
Cập nhật: có thể tôi tìm thấy nó ở đây .
Có ít nhất một cổng Windows cho which
tiện ích.
function find ($string) {
Get-ChildItem -Path 'c:\' -Recurse -Filter $string;
}
function whereis ($string) {
$superpath = "$env:Path;C:\Program Files;C:\Program Files (x86)";
(echo $superpath).Split(';') | Get-ChildItem -Recurse -Filter $string;
}
Thí dụ:
PS> tìm Mozilla.admx
Directory: C:\Windows\PolicyDefinitions
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/27/2016 12:22 PM 37146 Mozilla.admx
PS> trong đó firefox.exe
Directory: C:\Program Files\Mozilla Firefox
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 9/21/2017 5:30 PM 477136 firefox.exe
Tôi đã tìm kiếm cái này ngày hôm nay và vì tôi đang dùng XP mà không có bộ tài nguyên, tôi đã chuyển sang powershell với lệnh sau:
dir -path c:\ -filter ffmpeg.* -r
where
chỉ tìm kiếm trong %PATH%
. Hơn nữa, nó chậm hơn rất nhiều và gây ra lỗi cho các thư mục mà bạn không có quyền đọc
Bạn có thể thử tìm kiếm lệnh bằng cách sử dụng như sau:
dir /s type-whatever-you-are-searching