2017-09-22 4 views
0

배치 파일을 쓰고 있는데 루트 경로에서 일부 파일을 cd .. 루트로 옮기고 싶습니다.배치 파일을 한 걸음 뒤로 이동

% ~ dp0을 사용하여 루트 경로를 찾습니다.

루트 경로에서 한 단계 뒤로 이동하는 가장 좋은 방법은 무엇입니까?

감사

답변

0

은 거의가 많은 단지 %~dp0..

를 사용하거나 완전히 해결하려면, SO https://stackoverflow.com/a/15568171/30447 대답이 참조에 대한 설명이 트릭

@echo off 
call :resolve "%~dp0.." 
goto :eof 

:resolve 
echo %~f1 
goto :eof 

를 사용

1

%~dp0 괄호 t 디렉터리 (후행 \ 포함), 따라서 %~dp0.. 배치 파일의 그랜드 부모 디렉터리를 가리 킵니다. 당신의 대답은 더 많은 질문으로 나를 잎, 오타에서 별도로

for %%I in ("%~dp0..") do echo/%%~fI 
+0

:

당신은 경로를 해결하기 for loop과 변수 참조 (%%I)의 ~f modifier를 사용할 수 있습니다. '% ~ dp0.'는 부모 디렉토리를 가르키고'% ~ dp0 ...'는 위대한 부모 등을 가리 킵니다.'% ~ dp0'가 드라이브 문자와 경로로 확장되면 왜 사용해야합니까? '~ f'한정자. ' "% ~ dp0 .."'은 괄호 평가 중에 확장되지 않기 때문에 완전히 확장 된 드라이브와 경로를 문자열 "%% I"'로 전달합니다. '~ f '로 다른 확장이 필요한 이유는 무엇입니까? – Compo

+0

@Compo, 왜'% ~ dp0..'가 자동으로 해결되어야합니까? '% ~ dp0'는 현재 배치 파일의 부모 디렉토리에'\'을 붙이거나'..'와 같이 추가하거나 추가하지 않고 단순히 드라이브 ('d')와 경로 ('p')로 확장됩니다. '.'는 같은 디렉토리를 가리키고 있기 때문에 ('anydir \ middir \ subdir'은'anydir \ middir \ subdir \ .'과 동일합니다.),'..'는 부모 디렉토리를 가리 킵니다 (그래서'anydir \ middir \ subdir \ ..'는'anydir'와 같습니다); 'anydir \ middir \ subdir \ .. \ .. '을 가리켜'anydir'을 할 필요가 없습니다.) ... – aschipfl

+0

@Compo, "괄호 평가"란 무엇을 의미합니까? ? 즉,'for'는'in' 이후 자동으로 부분을 해결합니까? 아니 그렇지 않아; 'anydir \ middir \ subdir \ .. \. \ .. \ file.ext'와 같은 경로를 절대로 분석하지 못하면 마지막 경로 요소에 나타날 때만 와일드 카드 ('*','?')를 해석합니다 (그래서 마지막'\'뒤에); 해결할 경로에'~ f' 수정자를 사용할 필요가 있습니다; 와일드 카드가 포함되어 있지 않으면'for'는 경로가 실제로 존재하는지 확인하기 위해 파일 시스템에 액세스하지 않습니다. – aschipfl

관련 문제