%~dp0

2009. 8. 19. 08:10 | 컴퓨터 관련 팁

최근에 해외 어둠의 툴 배치스크립트를 보고 위 변수(?)를 보게 되었는데 해당 배치파일의 실행폴더를 그대로 받아주더군요.

 

비스타에선 문제가 없었던 것 같은데 윈도우 7의 경우 UAC가 켜져있는 상태로 배치파일에 우클릭 해서 관리자 권한으로 실행을 하면 System32 경로에서 스크립트가 실행되기 때문에 파일 복사시에 지정된 경로를 찾지 못해서 에러가 발생하는 문제가 있었습니다.

 

이제 관리자 권한이 필요하면서 동시에 파일 복사 명령어가 들어가는 스크립트 실행시 더이상 Admin 계정을 활성화 시켜셔 스크립트를 실행할 필요는 없을 것 같습니다.

 

 

 

 

 

(예제)

 

※ data 라는 폴더와 배치파일이 동일한 위치에 존재하는 경우를 가정

 

xcopy data\spp\tokens %windir%\System32\spp\tokens /cheriky

 

위와같은 명령줄이 배치파일에 들어있는 경우 만약 UAC 켜진 상태로 우클릭해서 관리자 권한으로 실행했다면

 

C:\Windows\System32\data\spp\tokens

 

라는 경로를 찾기 때문에 지정된 경로를 찾을 수 없다고 나오면서 복사 에러가 납니다.

 

하지만

 

xcopy %~dp0data\spp\tokens %windir%\System32\spp\tokens /cheriky

 

라고 넣으면 UAC가 켜져있는 상태에서 우클릭 - 관리자 권한으로 실행을 했다고 하더라도 정상적으로 파일 복사가 이루어집니다.

 

 

 

(추가1)

가만히 생각해보니 그냥 스크립트 시작 부분에

 

cd "%~dp0"

 

를 넣어서 실행 위치를 System32에서 배치파일이 존재하는 위치로 이동시킨 다음 작업하는게 편리할 것 같네요 ^^

 

 

 

(추가2)

cd 명령어는 디렉터리 변경만 가능하고 드라이브가 다르면 옮겨지지 않습니다.

따라서 해당 파일이 윈도우가 설치된 파티션과 다른 드라이브에 있다면

 

pushd "%~dp0"

 

해주시면 스크립트 위치로 이동이 됩니다.