본문 바로가기
Etc

Bat 파일, 실행된 bat파일 위치 알기, 실행경로로 이동하기

by 뿡뿡대마왕 2021. 3. 2.
반응형

bat파일에 간단한 프로그램의 인자값을 셋팅하여 전달하는 경우가 종종있다.

 

개발자나 컴퓨터를 조금 아는 사람이라면 사용자가 직접 cmd창을 열어 해당 exe경로로 이동, 인자값도 넣고

 

알아서 잘할 수 있지만 그렇지 않다면 휴먼에러를 bat파일과 exe등을 같이 동봉하여 전달하는 경우가 있다.

 

예전에 이런 방식으로 전달하였는데 전달받은 사용자쪽에서는 해당 bat가 동작되지 않는다는 부분을 확이하였다.

 

경로상의 문제였다...

 

관리자 권한으로 실행하게 되거나 어찌됬든 cmd의 경로가 현재 배치가 아닌곳에서 실행되기 때문에 exe파일 경로를

 

찾지 못하는 것이었다.

 

따라서 bat파일에 현재 bat가 실행되는 경로를 알기 위해서는 아래와 같은 bat명령어를 사용하면 된다.

 

 

-----------------------------------------------------------------------------------------------------------------------------------

경로 확인

만약 배치파일의 경로가 다음과 같은 경우

파일 경로 : C:\Test\Path1\ex1.bat 

 %0

 파일 전체 경로

 C:\Test\Path1\ex1.bat 

 %~d0  드라이브 명  C:
 %~p0  경로   \Test\Path1\
 %~n0  파일 명   ex1
 %~x0  확장자 명  .bat 
 %~dp0  드라이브와 경로

 C:\Test\Path1\


출처: https://chulhee.tistory.com/entry/dp0 [청소대장군의집]

-----------------------------------------------------------------------------------------------------------------------------------

 

우리는 %~dp0를 사용하여 bat파일이 실행된 경로를 알 수 있다

근데 문제가 또 있다.

우리가 경로이동시 사용되는 명령어는 CD로는 드라이브가 틀리면 이동할 수 가 없다.

그래서 아래 처럼 명령어를 입력해도 실행되는 bat파일 경로가 D드라이브라던가 E드라이브이면 

아래 명령어로는 이동이 불가하다.

cd %~dp0

 

이럴땐 아래처럼 하면 직접 해당 드라이브의 경로로 이동할 수 있다.

pushd "%~dp0"

 

자 그럼 간단하게 bat파일을 작성해 보자.

Abx.exe라는 실행파일에 -t라는 인자를 주는 bat를 작성하여 전달한다고 할때

(아래와 같은 형태로 압축하여 전달하는 경우)

 

Start.bat파일의 내용은 아래 처럼 간단히 작성하면 된다.

pushd "%~dp0"
%~dp0Abx.exe -t

정보는 공유되어야 한다 쭈욱~

반응형

댓글