10 votes

Comment puis-je "quel <binaire>" dans cmd.exe ?

Existe-t-il un moyen de déterminer rapidement l'emplacement d'un fichier binaire (que l'application %PATH% ) est situé.

Il s'agit de quelque chose qui ferait l'équivalent de which perl dans un Shell unix traditionnel.

Je comprends que Le kit de ressources a une where mais ce kit n'est pas installé sur mon ordinateur (d'entreprise), je ne peux donc pas utiliser la commande where .

14voto

Alex North-Keys Points 521

Un one-liner cmd.exe pour which serait :

for %G in (<binary.exe>) do @echo.%~$PATH:G

Vous pouvez le coder comme un simple which.bat :

@echo off
for %%G in (%1) do @echo.%%~$PATH:G

EDIT : il faut le nom complet du binaire : which perl.exe , pas which perl . Il est possible d'écrire un fichier batch qui prend en compte %PATHEXT%, de sorte qu'il n'a pas besoin du nom complet du binaire. N'hésitez pas à me le faire savoir si vous en avez besoin.

EDIT2 : j'ai quand même décidé d'écrire le fichier batch. Le voici :

@echo off
setlocal enabledelayedexpansion

set ext= ;%PATHEXT%
:extloop1
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
  if exist %1%%A (
    echo .\%1%%A
    goto finish
  )
  set ext=%%B
)
if "!ext!" neq "" goto extloop1

set ext= ;%PATHEXT%
:extloop2
for /f "delims=; tokens=1,*" %%A in ("!ext!") do (
  for %%C in (%1%%A) do (
    if exist %%~$PATH:C (
      echo %%~$PATH:C
      goto finish
    )
  )
  set ext=%%B
)
if "!ext!" neq "" goto extloop2

:finish
endlocal

Tout d'abord, comme le suggère Bob, il vérifie si le binaire existe dans le répertoire courant. Si le binaire n'est pas trouvé, une autre boucle est exécutée qui effectue la recherche dans la variable %PATH%.

Les boucles sont basées sur if ... goto , for n'est utilisée que pour diviser le ext par le caractère ';'. La valeur de %PATHEXT% est précédé d'une extension vide, ce qui permet de rechercher des binaires entièrement nommés - à la fois des which perl et which perl.exe œuvre.

3voto

yosh m Points 2176

Vous pouvez essayer la collection d'utilitaires de Paul Sadowski. which . Voir le site : http://www.paulsadowski.com/wsh/cmdprogs.htm

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X