2013-04-08 5 views
7

배치 파일을 사용 중이며 배치의 같은 디렉토리에있는 폴더로 보내길 원한다고 가정 해 봅시다. 내가 잘못하지 않았다면 "% ~ dp0 \ whateverfoldername"이라고 쓰십시오. 그러나 ". \ whateverfoldername"을 쓰는 것만으로는 할 수 없습니까? 그렇다면 각 명령의 차이점 및/또는 이점은 무엇입니까?"% ~ dp0"과 ". "의 차이점은 무엇입니까?

+1

어쩌면 할 수 있습니다. 그러나 현재 디렉토리가 희망하는 위치에 있지 않으면 비참하게 실패 할 것입니다. –

+0

관리자로 실행하면 어떤 결과가 나올지 ... 그러므로 RGuggisberg가 말하는 것 .. 지금은 lol이됩니다. – user2259606

답변

17
pushd %~dp0 

은 일괄 처리가 시작된 원래 디렉토리로 변경하는 데 자주 사용됩니다. 이것은 사용자가 현재 디렉토리를 변경하는 '관리자 권한으로 실행'할 수있는 최신 OS에서 매우 유용합니다! 언젠가 시도해보십시오. 간단한 박쥐를 만드십시오.

@echo off 
echo.CD=%CD% 
pushd %~dp0 
echo.CD=%CD% 
pause 

이제 실행하십시오. Vista, Win 7, Win 8, 2008 Server 또는 2012 Server에서 'As Administrator'로 다시 실행하십시오. 어떻게 되나요?

+0

좋아,이게 많은 도움이, 왜 dp0가 필요한지 알 겠어. 그러나 pushd와 cd의 차이점은 무엇입니까? – user2259606

+0

자신에게 대답 : pushd와 cd의 차이점은 pushd가 POPD 명령에서 사용할 이전 폴더/경로를 저장한다는 것입니다. POPD PUSHD 명령으로 가장 최근에 저장된 경로/폴더로 디렉토리를 다시 변경합니다. 팔. 나는 너를 고맙다 너희들 사랑해! – user2259606

+1

루트를 다른 드라이브로 이동해야하는 경우 PUSHD는 원활하게 작동하지만 CD에서는/d 매개 변수와 함께 CD를 사용하거나 CD를 호출 한 다음 드라이브 이름을 입력해야합니다. –

3

".\은 다음 THAT 디렉토리가 아닌 디렉토리에 배치 상주에서 찾고있을 것이다 당신이 CD 명령을 사용하여 디렉토리를 변경 한 따라서 경우 CURRENT 디렉토리에 대한 찾습니다.

실제로 배치 파일을 유지하기 위해 종종 \batch 또는 \belfry이라고하는 별도의 디렉토리를 만드는 것이 일반적입니다. 문제의 ,batpath에 있으면 해당 위치에 배치됩니다. %dp0.bat의 위치를 ​​산출합니다.

+0

또한 작업 디렉토리는 스크립트가 시작된 방법에 따라 스크립트의 상위 디렉토리와 다를 수 있습니다. –

관련 문제