start - windows where is exe




Esiste un equivalente di "which" sulla riga di comando di Windows? (15)

Poiché a volte ho problemi di percorso, in cui uno dei miei script cmd è nascosto (ombreggiato) da un altro programma (in precedenza sul percorso), mi piacerebbe essere in grado di trovare il percorso completo di un programma sulla riga di comando di Windows, dato solo il suo nome

Esiste un equivalente al comando UNIX 'which'?

Su UNIX, which command stampa il percorso completo del comando dato per trovare e riparare facilmente questi problemi di shadowing.


Gli strumenti di GnuWin32 hanno, insieme a tutta una serie di altri strumenti Unix.


Ho creato uno strumento simile a Ned Batchelder:

Ricerca di file .dll e .exe in PATH

Mentre il mio strumento è principalmente per la ricerca di varie versioni di dll mostra maggiori informazioni (data, dimensione, versione) ma non usa PATHEXT (spero di aggiornare presto il mio strumento).


Ho usato il modulo da npm per un bel po ', e funziona molto bene: https://www.npmjs.com/package/which È una grande alternativa multi piattaforma.

Ora sono passato a which che viene fornito con Git. Basta aggiungere al percorso il percorso /usr/bin da Git, che di solito è in C:\Program Files\Git\usr\bin\which.exe . Il which binario sarà in C:\Program Files\Git\usr\bin\which.exe . È più veloce e funziona come previsto.


In PowerShell, è gcm , che fornisce informazioni formattate su altri comandi. Se si desidera recuperare solo il percorso dell'eseguibile, utilizzare .Source .

Ad esempio: gcm git o (gcm git).Source

tidbits:

  • Disponibile per Windows XP.
  • Disponibile da PowerShell 1.0.
  • gcm è un alias del cmdlet Get-Command .
  • Senza parametri, elenca tutti i comandi disponibili offerti dalla shell host.
  • Puoi creare un alias personalizzato con Set-Alias which gcm e usarlo come: (which git).Source . (which git).Source .
  • Documenti ufficiali: https://technet.microsoft.com/en-us/library/ee176842.aspx

In Windows PowerShell:

set-alias which where.exe

La versione migliore di ciò che ho trovato su Windows è l'utilità "whereis" di Joseph Newcomer, che è disponibile (con origine) dal suo sito .

Vale la pena leggere l'articolo sullo sviluppo di "whereis".


Nessuna delle porte Win32 di Unix che potrei trovare su Internet è soddisfacente, perché tutte hanno una o più di queste carenze:

  • Nessun supporto per la variabile PATHEXT di Windows. (Che definisce l'elenco di estensioni implicitamente aggiunte a ciascun comando prima di analizzare il percorso e in quale ordine.) (Uso molti script tcl e non è disponibile pubblicamente quale strumento potrebbe trovarli.)
  • Nessun supporto per le code page cmd.exe, che consente loro di visualizzare i percorsi con caratteri non ascii in modo errato. (Sono molto sensibile a questo, con il ç nel mio nome :-))
  • Nessun supporto per le distinte regole di ricerca in cmd.exe e nella riga di comando di PowerShell. (Nessuno strumento pubblicamente disponibile troverà script .ps1 in una finestra di PowerShell, ma non in una finestra di cmd!)

Così alla fine ho scritto il mio che, che sostiene correttamente tutto quanto sopra.

Disponibile qui: http://jf.larvoire.free.fr/progs/which.exe


Non disponibile Windows, ma è fornito da Services for Unix e ci sono diversi script batch che girano attorno alla stessa cosa come questa.


Per voi utenti XP (che non hanno il comando integrato), ho scritto un comando "where like" come un rubygem chiamato whichr

Per installarlo, installa ruby

poi

gem install whichr

eseguilo come

c:\>whichr cmd_here




Sorpreso che nessuno abbia ancora menzionato cygwin come soluzione. Se non ti dispiace usare una soluzione di terze parti, allora cygwin è la strada da percorrere.

Cygwin ti dà il comfort di * nix nell'ambiente Windows (e puoi usarlo nella shell dei comandi di Windows o usare una shell * nix a tua scelta). Ti dà un'intera serie di comandi * nix (come i which ) per Windows, e puoi semplicemente includere quella directory nel tuo PATH .


Sto usando GOW (Gnu su Windows) che è una versione leggera di cygwin. Puoi prenderlo da GitHub here.

Gow (Gnu On Windows) è l'alternativa leggera a Cygwin. Usa un comodo programma di installazione di Windows che installa circa 130 applicazioni UNIX open source estremamente utili compilate come binari nativi di win32. È progettato per essere il più piccolo possibile, circa 10 MB, a differenza di Cygwin che può funzionare ben oltre i 100 MB a seconda delle opzioni. - Informazioni sulla descrizione (Brent R. Matzelle)

Screenshot di un elenco di comandi inclusi in GOW.


TCC e TCC / LE di JPSoft sono sostituzioni CMD.EXE che aggiungono funzionalità significative. Pertinente alla domanda dell'OP, which è un comando incorporato per i processori di comandi della famiglia TCC.


Windows Server 2003 e versioni successive (ovvero qualsiasi cosa dopo Windows XP a 32 bit) fornisce il programma where.exe che esegue alcuni di ciò which fa, sebbene corrisponda a tutti i tipi di file, non solo ai comandi eseguibili. (Non corrisponde ai comandi della shell incorporati come cd .) Accetta anche i caratteri jolly, quindi where nt* trova tutti i file nel %PATH% e nella directory corrente i cui nomi iniziano con nt .

Prova where /? per un aiuto.

Notare che Windows PowerShell definisce where un alias per il cmdlet Where-Object , quindi se si desidera where.exe , è necessario digitare il nome completo invece di omettere l'estensione .exe .







path-variables