Existe uma maneira de determinar rapidamente onde um binário (para o qual a %PATH%
variável aponta) está localizado.
Isso é algo que faria o equivalente which perl
a um shell unix tradicional.
Eu entendi aquiloO kit de recursostem um where
comando, mas este kit não está instalado no meu computador (corporativo), então não posso usar o where
.
Responder1
Uma linha única de cmd.exe which
seria:
for %G in (<binary.exe>) do @echo.%~$PATH:G
Você pode codificá-lo como um simples which.bat:
@echo off
for %%G in (%1) do @echo.%%~$PATH:G
EDIT: requer nome completo do binário: which perl.exe
, não which perl
. É possível escrever um arquivo em lote que leve em consideração %PATHEXT%, portanto não precisa do nome completo do binário. Por favor, deixe-me saber se você precisar.
EDIT2: de qualquer forma decidi escrever o arquivo em lote. Aqui está:
@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
Primeiro, conforme sugestão de Bob, ele verifica se o binário existe no diretório atual. Caso o binário não seja encontrado, é executado outro loop que faz a busca através da variável %PATH%.
Os loops são baseados em if ... goto
, for
o comando é usado apenas para dividir o ext
valor por ';' personagem. O valor de %PATHEXT%
é anexado a uma extensão vazia, que permite a pesquisa de binários totalmente nomeados - ambos which perl
e which perl.exe
funciona.
Responder2
Você poderia experimentar a coleção de utilitários de Paul Sadowski - ele inclui um arquivo which
. Veja em:http://www.paulsadowski.com/wsh/cmdprogs.htm