ProgramingTip

명령 줄 .cmd / .bat 펼쳐서, 실행중인 펼쳐의 디렉터리를 가져 오는 방법

bestdevel 2020. 10. 11. 10:57
반응형

명령 줄 .cmd / .bat 펼쳐서, 실행중인 펼쳐의 디렉터리를 가져 오는 방법


실행 된 디렉토리를 가져와야합니까?


Raymond Chen은 몇 가지 아이디어를 가지고 있습니다.

https://devblogs.microsoft.com/oldnewthing/20050128-00/?p=36573

MSDN 아카이브는 다소 경향이 있으므로 여기에 전체를 인용했습니다.

쉬운 방법은 %CD%의사 변수 를 사용하는 것 입니다. 현재 작업 디렉토리로 확장됩니다.

set OLDDIR=%CD%
.. do stuff ..
chdir /d %OLDDIR% &rem restore current directory

(물론, 저장 / 복원 디렉토리는 더 쉽게 함께 할 수 있었다 pushd/ popd하지만 여기 지점이 존재한다.)

%CD%트릭은 명령 줄에서 편리하게 사용할 수 있습니다. 예를 들어, 작업 할 파일이있는 디렉토리에있는 경우가 많지만 ... 오, 작업을 수행 디렉토리로 chdir해야합니다.

set _=%CD%\curfile.txt
cd ... some other directory ...
somecommand args %_% args

(저는 %_%스크래치 환경 변수 로 사용 하고 싶습니다.)

SET /?명령 프로세서에서 제공하는 다른 의사 변수를 입력 하십시오.

또한 문서의 주석은 예를 들어 다음 기사를 스캔 할 가치가 있습니다 (WayBack Machine을 통해).

http://blogs.msdn.com/oldnewthing/archive/2005/01/28/362565.aspx#362741

여기에는 % ~ dp0 사용이 포함됩니다.

배치 파일이 어디에 있는지 어디에 있는지 : %~dp0

%0배치 파일의 이름입니다. ~dp지정된 인수의 드라이브 및 경로를 제공합니다.


이 펼쳐의 경로와 동일합니다.

%~dp0

다음 배치 변수 확장 구문을 사용합니다. 매개 변수 0은 항상 펼쳐져 있습니다.

펼쳐서 저장하시면 C:\example\script.bat%~dp0평가 C:\example\됩니다.

ss64.com 에는 다음 변수 확장 구문에 대한 자세한 정보가 있습니다. 관련 발췌문은 다음과 가변합니다.

명령 줄에서 % 번호 위치를 사용하여 변수의 값을 수 있습니다.

[...]

매개 변수를 사용하여 파일 이름을 제공하면 다음 확장 구문을 적용 할 수 있습니다.

[...]

% ~ d1 % 1을 (를) 드라이브 문자로만 확장 -C :

[...]

% ~ p1 % 1을 경로로만 확장합니다 (예 : \ utils \). 여기에는 일부 명령에서 이스케이프 문자로 해석 될 수있는 후행 \이 포함됩니다.

[...]

위의 수정 튼 결합 할 수 있습니다.

% ~ dp1 % 1을 드라이브 문자와 경로로만 확장합니다.

[...]

% 0을 사용하여 배치 펼쳐집니다 (예 : W : \ scripts \).


for /F "eol= delims=~" %%d in ('CD') do set curdir=%%d

pushd %curdir%

출처

참고 URL : https://stackoverflow.com/questions/130112/command-line-cmd-bat-script-how-to-get-directory-of-running-script

반응형