windows - sirve - símbolo del sistema




¿Hay un equivalente de 'cuál' en la línea de comandos de Windows? (15)

Bajo PowerShell, get-command encontrará ejecutables en cualquier lugar de $Env:PATH .

get-command eventvwr

CommandType   Name          Definition
-----------   ----          ----------
Application   eventvwr.exe  c:\windows\system32\eventvwr.exe
Application   eventvwr.msc  c:\windows\system32\eventvwr.msc

También encuentra cmdlets de powershell, funciones, alias, archivos con extensiones ejecutables personalizadas a través de $Env:PATHEXT , etc., definidas para el shell actual (muy similar al type -a foo de bash type -a foo ), lo que lo convierte en una opción mejor que otras herramientas como where.exe , which.exe , etc., que desconocen estos comandos de PowerShell.

Puede configurar rápidamente un alias con sal which gcm (forma corta de set-alias which get-command ).

Como a veces tengo problemas con la ruta, donde otro programa (anteriormente en la ruta) oculta una de mis propias secuencias de comandos de cmd, me gustaría poder encontrar la ruta completa a un programa en la línea de comandos de Windows solo su nombre

¿Hay un equivalente al comando UNIX 'cuál'?

En UNIX, which command imprime la ruta completa del comando dado para encontrar y reparar fácilmente estos problemas de sombreado.


En PowerShell, es gcm , que proporciona información formateada sobre otros comandos. Si desea recuperar solo la ruta al ejecutable, use .Source .

Por ejemplo: gcm git o (gcm git).Source

Tidbits:


En Windows PowerShell:

set-alias which where.exe

Este archivo por lotes utiliza el manejo de variables CMD para encontrar el comando que se ejecutará en la ruta. Nota: el directorio actual siempre se realiza antes de la ruta) y, dependiendo de qué llamada de API se use, se buscarán otras ubicaciones antes / después de la ruta.

@echo off
echo. 
echo PathFind - Finds the first file in in a path
echo ======== = ===== === ===== ==== == == = ====
echo. 
echo Searching for %1 in %path%
echo. 
set a=%~$PATH:1
If "%a%"=="" (Echo %1 not found) else (echo %1 found at %a%)

Ver set /? por ayuda


He creado una herramienta similar a Ned Batchelder:

Buscando archivos .dll y .exe en PATH

Si bien mi herramienta es primordial para la búsqueda de varias versiones dll, muestra más información (fecha, tamaño, versión) pero no usa PATHEXT (espero actualizar mi herramienta pronto).


He utilizado el módulo de npm desde hace bastante tiempo, y funciona muy bien: https://www.npmjs.com/package/which Es una excelente alternativa multiplataforma.

Ahora cambié a la que viene con Git. Simplemente agregue a su ruta la ruta /usr/bin de Git, que generalmente se encuentra en C:\Program Files\Git\usr\bin\which.exe . El binario que estará en C:\Program Files\Git\usr\bin\which.exe . Es más rápido y también funciona como se espera.


Las herramientas GnuWin32 tienen which , junto con un montón de otras herramientas Unix.


Ninguno de los puertos Win32 de Unix que pude encontrar en Internet son satistactory, porque todos tienen uno o más de estos defectos:

  • No hay soporte para la variable Windows PATHEXT. (Lo que define la lista de extensiones agregadas implícitamente a cada comando antes de explorar la ruta y en qué orden). (Utilizo muchos scripts tcl y no estoy disponible públicamente qué herramienta podría encontrarlos).
  • No es compatible con las páginas de códigos cmd.exe, lo que hace que muestren incorrectamente las rutas con caracteres que no son ASCII. (Soy muy sensible a eso, con el ç en mi primer nombre :-))
  • No se admiten las distintas reglas de búsqueda en cmd.exe y la línea de comandos de PowerShell. (Ninguna herramienta disponible públicamente encontrará scripts .ps1 en una ventana de PowerShell, ¡pero no en una ventana de cmd!)

Así que eventualmente escribí el mío, el cual soporta todo lo anterior correctamente.

Disponible allí: http://jf.larvoire.free.fr/progs/which.exe


Para ustedes, los usuarios de XP (que no tienen ningún comando incorporado), he escrito un comando "donde me gusta" como un rubygem llamado whichr

Para instalarlo, instala ruby.

entonces

gem install whichr

corre como

c:\>whichr cmd_here




Sorprendido de que nadie haya mencionado aún a cygwin como una solución. Si no le importa usar una solución de terceros, entonces cygwin es el camino a seguir.

Cygwin le brinda la comodidad de * nix en el entorno de Windows (y puede usarlo en su shell de comandos de Windows, o usar un shell * nix de su elección). Te da una gran cantidad de comandos * nix (como which ) para Windows, y puedes incluir ese directorio en tu PATH .


Tengo una función en mi perfil de PowerShell llamada 'which'

function which {
    get-command $args[0]| format-list
}

Así es como se ve la salida:

PS C:\Users\fez> which python


Name            : python.exe
CommandType     : Application
Definition      : C:\Python27\python.exe
Extension       : .exe
Path            : C:\Python27\python.exe
FileVersionInfo : File:             C:\Python27\python.exe
                  InternalName:
                  OriginalFilename:
                  FileVersion:
                  FileDescription:
                  Product:
                  ProductVersion:
                  Debug:            False
                  Patched:          False
                  PreRelease:       False
                  PrivateBuild:     False
                  SpecialBuild:     False
                  Language:

Vaya a obtener unxutils desde aquí: http://sourceforge.net/projects/unxutils/

oro en las plataformas de Windows, pone todas las utilidades agradables de Unix en un Windows estándar DOS. Lo he estado usando por años.

Tiene un 'que' incluido. Tenga en cuenta que es sensible a las mayúsculas aunque

NB: para instalarlo, haga explotar el archivo zip en algún lugar y agregue ... \ UnxUtils \ usr \ local \ wbin \ a su variable env del sistema de ruta.


Windows no está disponible, pero es proporcionado por Servicios para Unix y hay varios scripts de lotes simples que flotan alrededor y logran lo mismo que este .





path-variables