Câu hỏi Windows tương đương với whereis?


Có tương đương với Unix không ở đâu lệnh trong Windows?

Vì vậy mà tôi có thể tìm ra nơi mà tôi có thể chạy thực sự là.


145
2017-08-11 10:50


gốc




Các câu trả lời:


Các Ở đâu lệnh thực hiện những gì bạn muốn và quay trở lại ít nhất là đến 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 hiện mà không có đối số (trên Vista), nó sẽ dẫn đến một trong các thư yêu thích của tôi:

C:\>where
ERROR: The operation completed successfully.

Nếu thực hiện trong PowerShell, hãy đảm bảo bao gồm '.exe' để phân biệt với bất kỳ bí danh hoặc vị trí 'ở đâu' dọc theo đường dẫn. ('where' là một bí danh điển hình cho Where-Object.ps1)

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

175
2017-09-10 23:00



Mỗi ngày tôi học một cái gì đó mới ... - Rubens Mariuzzo
Loại buồn where chỉ trả về trợ giúp sử dụng ngay bây giờ trong Windows 7. Muốn xem nó cho chính tôi: p - Svish
where không có trong XP - Tom Roggero
@TomRoggero, tôi có thể rõ ràng hơn. Nó là một phần của bộ tài nguyên tùy chọn bắt đầu với Windows 98 và chỉ được đưa vào cài đặt cơ bản cho phiên bản sau XP. - Kevin


hacker.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) 
)

6
2017-09-10 21:08



Đây là một sửa chữa tốt cho các hệ thống cũ, nhưng bạn nên biết rằng nó kết quả trong một vài quirks. Nó khớp với các thư mục, chỉ trả về kết quả đầu tiên được tìm thấy trong đường dẫn cho mỗi phần mở rộng, và nên bao gồm mọi phần mở rộng được tìm thấy trong biến môi trường PATHEXT. - Kevin
yah, đây là một chút cũ hack của tôi, khi tôi dán nó ở đây tôi ngay lập tức nhìn thấy tiềm năng cho% PATHEXT% :) - akira


Vui lòng sử dụng Ở đâu chỉ huy:

> 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ư sau:

 > $env:path.Split(';') | select -Unique | ? {$_ -and (test-path $_)} | gci -Filter app.exe

6
2017-08-04 21:39



Đây là câu trả lời hay nhất - skan


Một nơi nào đó "ra khỏi đó" tôi tìm thấy tập tin thực thi 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.


2
2017-11-09 05:00





Có ít nhất một Cổng Windows cho which tiện ích.


1
2017-08-11 10:53





Một cách tiếp cận khác (GUI), nhưng nhìn vào Mọi điều.


0
2017-11-09 06:52



Đó là một cái gì đó khác nhau. Nó chắc chắn không giúp bạn trả lời câu hỏi "những gì thực thi được thực thi chính xác, khi tôi thực thi <command> trong thư mục hiện tại"và đó là điều OP đang hỏi. - Dawid Ferenczy


Tôi đã tìm kiếm cho điều này ngày hôm nay và kể từ khi tôi đang trên XP mà không có bộ tài nguyên, tôi quay sang powershell với lệnh sau đây:

dir -path c:\ -filter ffmpeg.* -r

0
2017-07-14 15:46



Tôi không thành thạo trong PowerShell nhưng có vẻ như bạn đang tìm kiếm thông qua toàn bộ cây thư mục. Điều này không tương đương với where chỉ tìm kiếm trong %PATH%. Hơn nữa nó chậm hơn nhiều và cung cấp lỗi cho các thư mục mà bạn không có quyền đọc - phuclv
Đồng ý ... Tôi không yêu cầu bản sao chính xác của chức năng, chỉ có khả năng định vị chương trình. - KalenGi


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> whereis firefox.exe

    Directory: C:\Program Files\Mozilla Firefox                                                                                 

Mode                LastWriteTime         Length Name                                                                           
----                -------------         ------ ----                                                                           
-a----        9/21/2017   5:30 PM         477136 firefox.exe        

0
2017-10-05 14:19





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

-1
2017-08-11 13:04



Điều này không hiệu quả với tôi. Ví dụ, lệnh exp nằm trong đường dẫn của tôi, nhưng dir / s exp hoặc dir / s exp.exe chỉ cung cấp cho "File Not Found". - bobmcn
Điều này sẽ làm việc nếu a) bạn tìm kiếm từ thư mục gốc của ổ đĩa, b) đường dẫn của bạn là tất cả trên một ổ đĩa, và c) đường dẫn của bạn theo thứ tự từ điển. Ngay cả trong những điều kiện này nó sẽ được ridiculously chậm. - Kevin