Gibt es in der Windows-Befehlszeile ein Äquivalent zu "which"?
Als ich manchmal Weg Probleme, wo eine meiner eigenen cmd-Skripts versteckt ist (shadowing) durch ein anderes Programm (früher auf dem Weg), ich möchte in der Lage sein den vollen Pfad zu einem Programm auf der Windows-Kommandozeile, da nur seinen Namen.
Gibt es ein äquivalent zu dem UNIX-Befehl 'die'?
Unter UNIX which command
druckt den vollständigen Pfad zu der angegebenen Befehl schnell zu finden und reparieren shadowing Probleme.
InformationsquelleAutor der Frage namin | 2008-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Windows Server 2003 und höher (also alles, was nach Windows XP (32 bit) bieten die
where.exe
Programm, das tut, waswhich
hat, aber es passt zu allen Arten von Dateien, nicht nur ausführbare Befehle. (Es stimmt nicht mit built-in-shell-Befehle wiecd
.) Es wird sogar akzeptiert wildcards, sowhere nt*
findet alle Dateien, die in Ihrem%PATH%
und aktuellen Verzeichnis, deren Namen beginnen mitnt
.Versuchen
where /?
für die Hilfe.Beachten Sie, dass Windows PowerShell definiert
where
als alias für derWhere-Object
- cmdletwenn Sie so wollenwhere.exe
Sie müssen geben Sie den vollständigen Namen statt der Wegfall der.exe
Erweiterung.InformationsquelleAutor der Antwort Michael Ratanapintha
Während späteren Versionen von Windows haben eine
where
Befehl, Sie können dies auch mit Windows XP, indem Sie die Umgebungsvariable Modifikatoren, wie folgt:Benötigen Sie keine zusätzlichen Werkzeuge und es ist nicht beschränkt auf
PATH
da können Sie ersetzen alle Umgebungsvariablen (in der path-format, natürlich), die Sie verwenden möchten.Und, wenn man will, kann alle Erweiterungen in PATHEXT (als Windows selbst), dieser funktioniert der trick:
Eigentlich es gibt alle Möglichkeiten, aber Sie können zwicken, es ganz einfach für bestimmte such-Regeln.
InformationsquelleAutor der Antwort paxdiablo
Unter PowerShell
get-command
finden ausführbare Dateien, die irgendwo in$Env:PATH
.Es findet auch powershell-cmdlets, Funktionen, Aliase von Dateien mit benutzerdefinierten ausführbaren Erweiterungen über
$Env:PATHEXT
usw. definiert, die für die aktuelle shell (ganz ähnlich wie die bash isttype -a foo
) - macht es einem besser geht als anderen tools wiewhere.exe
which.exe
etc. die sind sich nicht bewusst, diese PowerShell-Befehle.Können Sie schnell einen alias einzurichten, mit
sal which gcm
(Kurzform vonset-alias which get-command
).InformationsquelleAutor der Antwort shalomb
In windows powershell:
InformationsquelleAutor der Antwort cmcginty
Wenn Sie PowerShell installiert (was ich empfehlen), können Sie verwenden Sie den folgenden Befehl als eine grobe Entsprechung (substitue Programmname für Ihr executable ' s name):
Mehr hier:
http://www.codeassassin.com/blog/PermaLink,guid,fd1967d1-f844-4e29-82e2-f2d6424b4ef9.aspx
InformationsquelleAutor der Antwort RexE
Den GnuWin32 tools haben
which
zusammen mit einer ganzen Reihe von anderen Unix-tools.InformationsquelleAutor der Antwort Ferruccio
In der Windows-CMD -
which
Anrufewhere
:InformationsquelleAutor der Antwort automatix
Überrascht, dass niemand erwähnt hat cygwin da doch eine Lösung. Wenn es Ihnen nichts ausmacht mit einem 3rd-party-Lösung, dann cygwin ist der Weg zu gehen.
Cygwin bietet Ihnen den Komfort von *nix in der Windows-Umgebung (und Sie können verwenden Sie es in Ihrem Windows-Befehls-shell, oder verwenden Sie eine *nix-shell Ihrer Wahl). Es gibt Ihnen eine ganze Reihe von *nix-Befehle (wie
which
) für Windows, und Sie können einfach schließen Sie dieses Verzeichnis in IhremPATH
.InformationsquelleAutor der Antwort palswim
In der PowerShell ist es
gcm
gibt die formatierten Informationen über andere Befehle. Wenn Sie abrufen möchten, und nur den Pfad zur ausführbaren Datei, verwenden Sie.Source
.Zum Beispiel:
gcm git
oder(gcm git).Source
Leckerbissen:
gcm
ist ein alias vonGet-Command
- cmdlet.Set-Alias which gcm
und verwenden Sie es wie:(which git).Source
.InformationsquelleAutor der Antwort vulcan raven
Holen unxutils von hier: http://sourceforge.net/projects/unxutils/
gold auf windows-Plattformen, stellt all die netten unix-Dienstprogramme auf einem windows-standard-DOS. Nutze es seit Jahren.
Es hat ein 'was' enthalten. Beachten Sie, dass es case-Sensitiv, obwohl.
NB: um es zu installieren explodieren die zip irgendwo und fügen Sie ...\UnxUtils\usr\local\wbin\ auf Ihrem system-path env variable.
InformationsquelleAutor der Antwort Jon Court
Weiß nicht, ob das hilft. Geschrieben als Antwort, weil ich nicht weiß, wie format-code in Kommentaren (Hilfe?)
Wenn Sie finden, ein freier pascal-compiler, kompilieren Sie diese, oder mailen Sie mir & ich kann versuchen zu Graben, oder E-mail zurück, die exe-Datei oder per post irgendwo. Ich poste den code, schlimm wie es ist, denn zumindest funktioniert es & zeigt den Algorithmus notwendig.
InformationsquelleAutor der Antwort Mawg
Nicht vorrätig Windows, aber das wird durch die Services for Unix und es gibt mehrere einfache batch-Skripte im Umlauf, die das gleiche erreichen wie diese diese eine.
InformationsquelleAutor der Antwort Robert Gamble
Die beste version, die ich gefunden habe, auf Windows ist Joseph Newcomer "whereis" - Dienstprogramm, das verfügbar ist (mit Quelle) aus seine Website.
Den Artikel über die Entwicklung von "whereis" ist lesenswert.
InformationsquelleAutor der Antwort Tim Lesher
Ich habe eine Funktion in meinem PowerShell-Profil mit dem Namen 'die'
Hier ist, was die Ausgabe sieht so aus:
InformationsquelleAutor der Antwort Fez
Habe ich erstellt-tool ähnlich wie Ned Batchelder:
Suche .dll-und .exe-Dateien im PFAD
Während mein tool ist vor allem für die Suche von verschiedenen dll-Versionen zeigt es weitere Informationen (Datum, Größe, version), aber es nicht verwenden PATHEXT (ich hoffe, dass ich update mein tool demnächst).
InformationsquelleAutor der Antwort Michał Niklas
Keiner der Win32-ports von Unix, die, das ich finden konnte im Internet sind satistactory, weil Sie alle haben eine oder mehrere dieser Mängel:
So dass ich schließlich schrieb meine eigene, die, die suports alle der oben genannten korrekt.
Dort zur Verfügung:
http://jf.larvoire.free.fr/progs/which.exe
InformationsquelleAutor der Antwort Jean-François Larvoire
Diese batch-Datei verwendet CMD variable Umgang zu finden, der Befehl, der ausgeführt werden würde in den Pfad. Hinweis: das aktuelle Verzeichnis wird immer ausgeführt, bevor der Pfad) und je nachdem, welches API-Aufruf verwendet wird, andere Standorte gesucht werden, vor/nach dem Weg.
Sehen
set /?
für die Hilfe.InformationsquelleAutor der Antwort
Können Sie die ersten git installieren von https://git-scm.com/download/win
öffnen Sie dann git bash und geben
InformationsquelleAutor der Antwort hamidreza samsami
TCC und TCC/LE von JPSoft sind CMD.EXE Ersatz, hinzufügen signifikante Funktionalität. Relevant für die OP ' s Frage,
which
ist ein builtin-Kommando für die TCC-Familie Kommando-Prozessoren.InformationsquelleAutor der Antwort David G
Ich bin mit GOW(Gnu on Windows) ist eine light-version von cygwin. Sie können grap es von github hier.
Screenshot eine Liste der Kommandos enthalten, die in GOW.
InformationsquelleAutor der Antwort Prayson Daniel
Für Sie XP-Nutzer (die keine
where
Befehl built-in), ich habe geschrieben eine "wo-wie" - Befehl als rubygem genanntwhichr
Um es zu installieren, installieren Sie ruby
dann
gem install whichr
führen Sie es wie
c:\>whichr cmd_here
InformationsquelleAutor der Antwort rogerdpack
Habe ich die
which
- Modul aus dem npm eine ganze Weile, und es funktioniert sehr gut: https://www.npmjs.com/package/whichEs ist eine große multi-Plattform-alternative.
Nun wechselte ich auf die
which
kommt mit Git. Fügen Sie einfach den Pfad der/usr/bin
Pfad von Git, die in der Regel beiC:\Program Files\Git\usr\bin\which.exe
. Diewhich
binary wird beiC:\Program Files\Git\usr\bin\which.exe
. Es ist schneller und funktioniert auch wie erwartet.InformationsquelleAutor der Antwort Giovanni Bassi