[배치파일] 실행중인 프로세스 경로를 변수에 저장하기

윈도우즈/OS 일반|2021. 12. 4. 07:00
반응형

배치파일의 %~dp0 는 동작을 하지만 exe 로 변환시 동작하지 않는 부분이 있어 아래 내용을 작성합니다.

예제에서는 explorer.exe 실행 경로를 찾아 변수에 저장하는 것으로 합니다.

아래와 같이 배치파일을 만들어 실행해 봅니다.

 

test.bat

@echo off

FOR /F "delims=" %%i IN ('wmic process where name^="explorer.exe" get ExecutablePath') DO (
echo %%i |find /i "explorer.exe" >nul
if errorlevel 1 (echo notfound) else (echo found && set item=%%i)
)

echo %item%

FOR %%i IN ("%item%") DO (
echo filedrive=%%~di
echo filepath=%%~pi
echo filename=%%~ni
echo fileextension=%%~xi
)

둘째줄에 IN 다음 괄호안에 들어오는것이 원래의 명령어인데 출력되는 라인이 많기도 하고 원하는

줄 (총 3줄에서 2번째줄) 이 변수에 넣기 힘든 부분이 있습니다.

(괄호 안에서는 name= 부분에 = 가 특수문자로 인식되어 앞에 ^ 를 추가함)

 

세번째줄에서 각 행을 출력할때마다 Explorer 가 있는지 살펴보고 있으면 set item=%%i 를 실행하여 item 변수에

디렉토리와 파일의 온전한 경로를 넣습니다.

 

마지막으로 획득한 파일 경로를 드라이브명, 디렉토리, 파일명, 확장자로 나누어 출력해 보았습니다.

아래 코드를 추가하면 원하는 부분만 조합이 가능합니다. (파일명 제외하고 디렉토리만 : C:\Windows\)

set a=%%~di
set b=%%~pi
echo %a%%b%

반응형

댓글()