Comme j'ai parfois des problèmes de chemin, où l'un de mes propres scripts cmd est caché (masqué) par un autre programme (plus tôt sur le chemin), je voudrais pouvoir trouver le chemin complet d'un programme sur la ligne de commande Windows, étant donné juste son nom.
Existe-t-il un équivalent à la commande UNIX 'which'?
Sous UNIX, which command
imprime le chemin complet de la commande donnée pour trouver et réparer facilement ces problèmes d'observation.
which
commande sous Unix standard. L'utilitaire POSIX esttype
. Le C Shell a une commande which, et certains systèmes l'ont comme un exécutable externe. Par exemple, sur Debian Linux,which
provient d'un paquet appelédebutils
. Cet externewhich
ne "voit" pas les fonctions intégrées, les alias ou les fonctions du shell.type
Est-ce que; Bashtype
a une option pour supprimer cela et faire juste une recherche de chemin.Réponses:
Windows Server 2003 et versions ultérieures (c'est-à-dire n'importe quoi après Windows XP 32 bits) fournissent le
where.exe
programme qui fait certaines de ceswhich
fonctions, bien qu'il corresponde à tous les types de fichiers, pas seulement aux commandes exécutables. (Il ne correspond pas aux commandes shell intégrées commecd
.) Il acceptera même les caractères génériques, doncwhere nt*
trouve tous les fichiers dans votre%PATH%
répertoire actuel dont les noms commencent parnt
.Essayer
where /?
d'obtenir de l'aide.Notez que Windows PowerShell se définit
where
comme un alias pour l'Where-Object
applet de commande , donc si vous le souhaitezwhere.exe
, vous devez taper le nom complet au lieu d'omettre l'.exe
extension.la source
where.exe
n'est pas un shell intégré, vous devez en avoir%windir%\system32
sur vous%PATH%
- ce qui peut ne pas être le cas, car l'utilisationwhere
suggère que vous pouvez travailler sur des problèmes avec votre chemin!Bien que les versions ultérieures de Windows aient une
where
commande, vous pouvez également le faire avec Windows XP en utilisant les modificateurs de variables d'environnement, comme suit:Vous n'avez pas besoin d'outils supplémentaires et ce n'est pas limité
PATH
car vous pouvez remplacer n'importe quelle variable d'environnement (au format de chemin, bien sûr) que vous souhaitez utiliser.Et, si vous en voulez une qui peut gérer toutes les extensions dans PATHEXT (comme le fait Windows lui-même), celle-ci fait l'affaire:
Il renvoie en fait toutes les possibilités, mais vous pouvez le modifier assez facilement pour des règles de recherche spécifiques.
la source
which
retour dans les jours W95 / DOS, l'ordre de recherche était - le répertoire actuel, puis chaque répertoire de chemin, pour cmd.com, puis cmd.exe, puis cmd.bat Donc, même cmd.bat dans le répertoire actuel est exécuté befroe cmd.exe dans le chemin@echo off for %%i in (%1) do @echo. %%~$PATH:%i
pour l'ajouter à un script alias.bat que vous chargez à chaque fois que vous exécutez cmd.exe (placez le script ci-dessus dans un nouveau répertoire appelé C: \ usr \ aliases):DOSKEY which=C:\usr\aliases\which.bat $*
Ensuite, vous pouvez créer un script pour lancer cmd.exe avec le fichier alias.bat:cmd.exe /K E:\usr\aliases\alias.bat
Sous PowerShell, vous
Get-Command
trouverez les exécutables n'importe où dans$Env:PATH
.Il trouve également des applets de commande PowerShell, des fonctions, des alias, des fichiers avec des extensions exécutables personnalisées via
$Env:PATHEXT
, etc. définis pour le shell actuel (assez similaire à Bashtype -a foo
) - ce qui en fait un meilleur choix que d'autres outils commewhere.exe
,which.exe
, etc. , qui ne sont pas conscients de ces Commandes PowerShell.Recherche d'exécutables en utilisant uniquement une partie du nom
Recherche d'exécutables personnalisés
Pour trouver d'autres exécutables non Windows (python, ruby, perl, etc.), des extensions de fichier pour ces exécutables doivent être ajoutées à la
PATHEXT
variable d'environnement (par défaut.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
) pour identifier les fichiers avec ces extensions dans l'PATH
exécutable as. CommeGet-Command
elle honore également cette variable, elle peut être étendue pour répertorier les exécutables personnalisés. par exempleVous pouvez rapidement configurer un alias avec
sal which gcm
(forme abrégée deset-alias which get-command
).Pour plus d'informations et d'exemples, consultez l'aide en ligne de
Get-Command
.la source
.BAT
,.CMD
, etc.), ils sont considérés comme exécutable parce que leurs extensions sont nommées dans laPATHEXT
variable (qui par défaut estPATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
). D'autres types d'exécutables (par exemple.py
,.rb
etc.) peuvent être ajoutés en ajoutant l'extension de fichier dans et en créant une association exécutable avecassoc
/ftype
- par exemple docs.python.org/3.3/using/…Dans Windows PowerShell:
la source
Si vous avez installé PowerShell (ce que je recommande), vous pouvez utiliser la commande suivante comme équivalent approximatif (remplacez programName par le nom de votre exécutable):
Plus est ici: Mon Manwich! PowerShell qui
la source
($Env:Path).Split(";") | Get-ChildItem -filter programName*
est si facile à taper ... ;-)Les outils GnuWin32 ont
which
, avec toute une série d'autres outils Unix.la source
Dans les
which
appels Windows CMDwhere
:la source
Cygwin est une solution. Si cela ne vous dérange pas d'utiliser une solution tierce, alors Cygwin est la solution.
Cygwin vous offre le confort de * nix dans l'environnement Windows (et vous pouvez l'utiliser dans votre shell de commande Windows, ou utiliser un shell * nix de votre choix). Il vous donne une multitude de commandes * nix (comme
which
) pour Windows, et vous pouvez simplement inclure ce répertoire dans votrePATH
.la source
Dans PowerShell, c'est le cas
gcm
, qui donne des informations formatées sur d'autres commandes. Si vous souhaitez récupérer uniquement le chemin d'accès à l'exécutable, utilisez.Source
.Par exemple:
gcm git
ou(gcm git).Source
Petits morceaux:
gcm
est un alias deGet-Command
cmdlet .Set-Alias which gcm
et l'utiliser comme:(which git).Source
.la source
J'ai une fonction dans mon profil PowerShell nommée 'qui'
Voici à quoi ressemble la sortie:
la source
> get-command app.exe | format-list
a parfaitement fonctionné!Allez chercher unxutils à partir d'ici: http://sourceforge.net/projects/unxutils/
or sur les plates-formes Windows, met tous les bons utilitaires Unix sur un DOS Windows standard. Je l'utilise depuis des années.
Il a un «qui» inclus. Notez cependant qu'il est sensible à la casse.
NB: pour l'installer, faites exploser le zip quelque part et ajoutez ... \ UnxUtils \ usr \ local \ wbin \ à la variable env de votre chemin système.
la source
.
pour le \ r. C'est une solution à 99% bien sûr!Pas en stock Windows mais il est fourni par Services pour Unix et il existe plusieurs scripts batch simples qui accomplissent la même chose comme celui -ci .
la source
Si vous pouvez trouver un compilateur Pascal gratuit, vous pouvez le compiler. Au moins, cela fonctionne et montre l'algorithme nécessaire.
la source
my_funk;
est inutile. Merci d'avoir posté un programme Pascal, ça me rappelle ma jeunesse! Dommage que Pascal n'ait pas évolué.La meilleure version que j'ai trouvée sur Windows est l'utilitaire "whereis" de Joseph Newcomer, qui est disponible (avec la source) sur son site .
L'article sur le développement de "whereis" mérite d'être lu.
la source
Vous pouvez d'abord installer Git à partir du téléchargement de Git , puis ouvrir Git Bash et taper:
la source
Aucun des ports Win32 d'Unix que j'ai pu trouver sur Internet n'est satisfaisant, car ils ont tous un ou plusieurs de ces défauts:
J'ai donc finalement écrit le mien, ce qui soutient tout ce qui précède correctement.
Disponible sur: http://jf.larvoire.free.fr/progs/which.exe
la source
Ce fichier de commandes utilise la gestion des variables CMD pour trouver la commande qui serait exécutée dans le chemin. Remarque: que le répertoire courant se fait toujours avant le chemin) et en fonction de l'appel d'API utilisé, d'autres emplacements sont recherchés avant / après le chemin.
Voir
set /?
pour de l'aide.la source
J'utilise GOW (GNU sous Windows) qui est une version allégée de Cygwin. Vous pouvez le récupérer sur GitHub ici .
Une capture d'écran d'une liste de commandes incluses dans GOW:
la source
J'ai créé un outil similaire à Ned Batchelder:
Recherche de fichiers .dll et .exe dans PATH
Bien que mon outil soit principalement destiné à la recherche de différentes versions de DLL, il affiche plus d'informations (date, taille, version) mais il n'utilise pas PATHEXT (j'espère mettre à jour mon outil bientôt).
la source
Il suffit de publier ce fichier batch à une ligne de Windows:
Un examen:
Pas tout à fait une ligne si vous enveloppez le code dans
setlocal enableextensions
etendlocal
.la source
Pour vous les utilisateurs de Windows XP (qui n'ont pas de
where
commande intégrée), j'ai écrit une commande "where like" sous la forme d'un rubygem appeléwhichr
.Pour l'installer, installez Ruby.
alors
Exécutez-le comme:
C:> quir cmd_here
la source
TCC et TCC / LE de JPSoft sont des remplacements CMD.EXE qui ajoutent des fonctionnalités importantes. Relatif à la question du PO,
which
est une commande intégrée pour les processeurs de commande de la famille TCC.la source
J'ai utilisé le
which
module de npm pendant un bon moment, et cela fonctionne très bien: https://www.npmjs.com/package/which C'est une excellente alternative multi-plateforme.Maintenant, je suis passé à celui
which
qui vient avec Git. Ajoutez simplement à votre chemin le/usr/bin
chemin de Git, qui est généralement àC:\Program Files\Git\usr\bin\which.exe
. Lewhich
binaire sera àC:\Program Files\Git\usr\bin\which.exe
. Il est plus rapide et fonctionne également comme prévu.la source
essaye ça
la source