%PATH%
변수가 가리키는 바이너리가 어디에 있는지 빠르게 확인할 수 있는 방법이 있습니까 ?
이는 which perl
전통적인 유닉스 쉘에서와 동일한 작업을 수행합니다.
나는 이해리소스 키트명령이 있는데 where
이 키트가 내 (회사) 컴퓨터에 설치되어 있지 않아 사용할 수 없습니다 where
.
답변1
cmd.exe 한 줄은 다음과 which
같습니다.
for %G in (<binary.exe>) do @echo.%~$PATH:G
간단한 which.bat로 코딩할 수 있습니다.
@echo off
for %%G in (%1) do @echo.%%~$PATH:G
편집: 바이너리의 전체 이름이 필요합니다: which perl.exe
, 가 아닙니다 which perl
. %PATHEXT%를 고려한 배치 파일 작성이 가능하므로 바이너리의 전체 이름이 필요하지 않습니다. 필요한 경우 알려주시기 바랍니다.
EDIT2: 어쨌든 배치 파일을 작성하기로 결정했습니다. 여기있어:
@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
먼저 Bob의 제안에 따라 현재 디렉터리에 바이너리가 있는지 확인합니다. 바이너리가 발견되지 않으면 %PATH% 변수를 통해 검색을 수행하는 또 다른 루프가 실행됩니다.
if ... goto
루프는 를 기반으로 하며 명령은 ';'으로 값을 for
분할하는 데만 사용됩니다 . ext
성격. 값 앞에는 %PATHEXT%
빈 확장자가 추가되어 전체 이름이 지정된 바이너리를 검색할 수 있습니다. 모두 which perl
및 which perl.exe
작동합니다.
답변2
which
Paul Sadowski의 유틸리티 컬렉션을 사용해 볼 수 있습니다 . 그는 . 다음에서 확인하세요.http://www.paulsadowski.com/wsh/cmdprogs.htm