2010-04-28 5 views

답변

103

%~dp0MyProgram.exe과 같이 %~dp0과 함께 .exe을 호출 해보세요.

%0에는 .bat 파일의 전체 경로가 들어 있습니다.

~dp은 후행 \을 포함하여 드라이브와 경로를 얻으려고한다고 말합니다.

+2

+1 vote 이 링크가 Google 검색에서 발견되었습니다. - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file. aspx – house9

+0

좋은 설명, 감사합니다! – enderland

+12

위의 Patrick Cuff의 대답은 작동하지만 디렉토리 경로의 일부가 이름에 공백이 있으면 실패합니다. 이 문제를 해결하려면 .exe 호출을 큰 따옴표로 묶어야합니다. "% ~ dp0MyProgram.exe" –

0

이 이상하게 보입니까? 나는 언젠가 창에 근무 한 적이없는하지만

당신은 ./

./program.exe

정말해야 어떤 차이가 선도적 인 시도 했습니까? 아마도 박쥐가 C : \ Windows의 컨텍스트에서 실행되고 있거나 일괄 처리가 어떤 시점에서 다른 Dir에 CD를 수행 했습니까?

+0

. \ (즉, 백 슬래시)입니다. –

+0

배치를 실행하면 다른 디렉토리에서 실행되고 있다고 생각합니다. –

+1

아마도 내 질문은 "어떻게 배치 파일을 두 번 클릭하고 같은 디렉토리에서 실행하게합니까?" –

11

스크립트의 시작 부분에 pushd을 사용하여 작업 디렉토리를 변경하고 popd을 사용하여 스크립트의 끝에 복원하여이 문제를 해결했습니다. 이렇게하면 작업 디렉토리가 박쥐 파일의 위치와 같다고 항상 가정 할 수 있습니다.

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd 
관련 문제