현재 실행 된 배치 스크립트가 포함 된 디렉토리 가져 오기


30

%0배치 파일에서 배치 파일의 포함 디렉토리를 얻기 위해 사용 하지만 결과는 다음과 같습니다.

c:\folder1\folder2\batch.bat

다음과 같이 배치 파일 이름이없는 디렉토리 만 원합니다.

c:\folder1\folder2\

어떻게하니? 경로를 필터링해야 할 수도 있습니다. 그렇다면 어떻게해야합니까?


배치 파일에서 % 0을 명령 줄의 일부로 사용하는 경우 % 0 \ .. \ RestOfStuff를 사용해야합니다. 이중 점은 파일 이름을지나 다시 가져옵니다.
John Gardeniers

현재 실행 된 스크립트를 포함하는 디렉토리가 반드시 현재 작업 디렉토리 (CD)와 같을 필요는 없습니다! 이에 따라 질문을 편집했습니다. 이제 "현재 디렉토리"라는 용어를 사용하지 않습니다.
chiccodoro

답변:


52
%~p0

경로 만 반환합니다.

%~dp0

드라이브 + 경로를 반환합니다.

주제에 대한 자세한 내용은 Microsoft 사이트를 참조하십시오 .

이 구문에 대한 정보 는 Windows OS에서 실행 하여 for 명령에 대한 도움말에서도 찾을 수 있습니다 for /?.


2
다른 참조 자료로서 다음과 같이 입력하면 동일한 변수 대체 목록도 표시됩니다.for /?
Kevin

% ~ dp0은 실행중인 배치 파일의 디렉토리를 제공합니다. 배치 파일이 다른 디렉토리에 있으면 다른 디렉토리를 얻게됩니다. % CD %는 항상 현재 디렉토리를 제공합니다.
Mihai Danila

@MihaiDanila, 아니요. OP가 요청한 것이 아닙니다.
Bart De Vos

실제로 현재 디렉토리 를 얻는 방법을 검색하는 동안이 질문에 도달했습니다 . 이것은 구글에서 첫 번째 히트였습니다. 제목은 분명히 현재 디렉토리를 말하지만 내용에 대해서는 맞습니다. 우리는 둘 다 맞지만, 나는 lain과 나는 생각이 무엇을하더라도 질문이 실제로 전달하는 것에 대해 더 옳다고 생각합니다. 내가 왜 lain 's answer의 답을 얻었 는가? 질문 제목은 질문 자체와 동기화되도록 이름을 바꿔야합니다.
Mihai Danila 2013

1
링크가 더 이상 유효하지 않기 때문에 링크에서 기사의 제목이 제공되었을 수 있습니다 .....
Rupsingh Mathwale

16

현재 디렉토리는 % CD %에 보관됩니다


4
% CD %는 배치 파일이 존재하지 않는 곳에서 배치를 실행하는 경로를 reture합니다.
Mohammad AL-Rawabdeh

4
@Mohammad : 사실, 그것은 현재 디렉토리입니다. 다른 하나는 배치 파일이있는 디렉토리입니다. 이 두 가지는 동일하지 않으며 귀하의 질문에 명시 적으로 요청합니다. 그러니 마음에 들지 않으면 편집하십시오.
Joey

% CD %는 배치 파일의 현재 경로를 반환하지만 배치 파일을 관리자로 실행할 때 실패합니다. 배치 파일을 관리자로 실행하면 System32 경로가 반환됩니다. 따라서 더 나은 옵션은 전체 경로에 % ~ dp0을 사용하는 것입니다

% ~ dp0은 실행중인 배치 파일의 디렉토리를 제공합니다. 배치 파일이 다른 디렉토리에 있으면 다른 디렉토리를 얻게됩니다. % CD %는 항상 현재 디렉토리를 제공합니다.
Mihai Danila

독자의 참고를 위해-질문은 원래 "현재 디렉토리"라는 용어를 사용하는 반면 스크립트를 포함하는 디렉토리를 의미합니다. 이제 수정되었습니다.
chiccodoro

4

파일 이름에 영향을주는 일부 표현식 :

~f0완전한 파일 이름을 제공합니다.
~dpnx0는와 동일 ~f0하지만 다음 과 같이 나눌 수 있음을 보여줍니다. d = drive p = path n = name x = extension


0

chdir 명령 사용

옵션 1:

chdir 

옵션 2 :

echo %CD%

여기에서도 마찬가지입니다. 이것은 OP의 의도가 아니 었습니다. 이제 질문이 명확 해졌습니다.
chiccodoro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.