Windows equivalente de whereis?

151

Existe um equivalente do comando Unix whereis no Windows?

Para que eu possa descobrir onde os comandos que eu posso executar realmente são.

    
por Svish 11.08.2009 / 12:50

9 respostas

181

O comando onde faz o que você quer e volta pelo menos ao kit de recursos para o Windows 98 e é incluído por padrão no Server 2003, Vista e mais recente:

C:\>where csc
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe
C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe

Se executado sem argumentos (no Vista), isso resulta em uma das minhas mensagens favoritas:

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

Se estiver executando no PowerShell, inclua '.exe' para diferenciar de qualquer alias ou scripts 'where' ao longo do caminho. ('where' é um alias típico para Where-Object.ps1)

C:\> where.exe where.exe
C:\Windows\System32\where.exe
    
por 11.09.2009 / 01:00
6

hackerish which.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) 
)
    
por 10.09.2009 / 23:08
6

Por favor, use o comando where :

> where app.exe

É a melhor maneira de alcançar seu objetivo.

Você também pode usar o comando do PowerShell:

> $env:path.Split(';') | gci -Filter app.exe

e a versão expandida são assim:

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

Em algum lugar "lá fora", encontrei esse arquivo de lote whereis.bat :

@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i

Update: talvez eu achei aqui .

    
por 09.11.2010 / 06:00
1

Há pelo menos uma porta do Windows para o utilitário which .

    
por 11.08.2009 / 12:53
0

Uma abordagem diferente (GUI), mas veja Tudo .

    
por 09.11.2010 / 07:52
0

Eu estava procurando por isso hoje e, como estou no XP sem o kit de recursos, procurei o powershell com o seguinte comando:

dir -path c:\ -filter ffmpeg.* -r
    
por 14.07.2012 / 17:46
0
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; 
}

Exemplo:

PS > localize o 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        
    
por 05.10.2017 / 16:19
-1

Você pode tentar pesquisar o comando usando o seguinte:

dir /s type-whatever-you-are-searching
    
por 11.08.2009 / 15:04