Pregunta Windows equivalente de whereis?


¿Hay un equivalente de Unix dónde está comando en Windows?

Para poder averiguar dónde puedo ejecutar los comandos en realidad.


145


origen




Respuestas:


los dónde comando hace lo que quiere y se remonta, al menos, al kit de recursos para Windows 98, y está incluido por defecto en Server 2003, Vista y más reciente:

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

Si se ejecuta sin argumentos (en Vista), da como resultado uno de mis mensajes favoritos:

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

Si se ejecuta en PowerShell, asegúrese de incluir '.exe' para distinguir de los alias 'donde' o scripts a lo largo de la ruta. ('donde' es un alias típico para Where-Object.ps1)

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

173



Todos los días aprendo algo nuevo ... - Rubens Mariuzzo
Un poco triste where simplemente devuelve ayuda de uso ahora en Windows 7. Quería verlo por mí mismo: p - Svish
where no disponible en XP - Tom Roggero
@TomRoggero, podría haber sido más claro. Es parte del kit de recursos opcional que comienza con Windows 98, y solo se incluye en la instalación básica para la versión posterior a XP. - Kevin


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

6



Esta es una buena solución para sistemas antiguos, pero debes saber que da como resultado algunas peculiaridades. Concuerda con directorios, solo devuelve el primer resultado encontrado en la ruta para cada extensión, y debe incluir cada extensión encontrada en la variable de entorno PATHEXT. - Kevin
Yah, este es un truco un poco más viejo que el mío, cuando lo pegué aquí instantáneamente vi el potencial de% PATHEXT% :) - akira


Por favor use dónde mando:

> where app.exe

Es la mejor manera de lograr tu objetivo.

También puede usar el comando de PowerShell:

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

y la versión expandida se ve así:

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

6



Esta es la mejor respuesta - skan


En algún lugar "allá afuera" encontré este archivo por lotes whereis.bat:

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

Actualización: tal vez lo encontré aquí.


2





Hay al menos un Puerto de Windows Para el which utilidad.


1





Un enfoque diferente (GUI), pero mira Todo.


0



Eso es algo diferente. Definitivamente no te ayuda a responder la pregunta "qué ejecutable se ejecuta exactamente, cuando ejecuto el <comando> en el directorio actual"y eso es lo que OP está preguntando. - Dawid Ferenczy


Estaba buscando esto hoy y como estoy en XP sin el kit de recursos, recurrí a powershell con el siguiente comando:

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

0



No soy competente en powershell, pero parece que estás buscando en todo el árbol de directorios. Esto no es equivalente a where que solo busca en el %PATH%. Además es mucho más lento y da errores para las carpetas que no tiene permiso de lectura - phuclv
De acuerdo ... No requirió una copia exacta de la funcionalidad, solo la capacidad de ubicar un programa. - 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; 
}

Ejemplo:

PD> encuentra 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





Puede intentar buscar el comando usando lo siguiente:

dir /s type-whatever-you-are-searching

-1



Esto no funciona para mi. Por ejemplo, el comando exp está en mi ruta, pero dir / s exp o dir / s exp.exe solo da "Archivo no encontrado". - bobmcn
Esto funcionaría si a) busca desde la raíz de la unidad, b) su ruta es todo en una unidad, yc) su ruta está en orden lexicográfico. Incluso bajo estas condiciones será ridículamente lento. - Kevin