2017-01-20 6 views
0

에서 현재 디렉토리의 상위 디렉토리/상위 디렉토리의 전체 경로를 얻는 방법은 'Current Path.bat'라는 배치 파일이 'C : \ A \ B \ '입니다. 내가 원하는 무엇아래 그림과 같이 명령 줄

C:\A\B\Current Path.bat 

출력에 현재 디렉토리의 상위 디렉토리/상위 디렉토리의 전체 경로입니다 (배치 파일이 저장되는 위치 즉/실행).

C:\A\ 

은 현재 내가 이것에 대한 해결 방법 알아 낸하지만 완벽한 것이 아니다 :

이 경우 예상되는 결과가 있어야한다. 이것에 대한 더 나은 해결책이 있는지 궁금합니다.

순간에 대한 나의 주위에 작업 :

@echo off 
set current_path=%cd% 
echo Current Path: %current_path% 
cd .. 
set upper_path= %cd% 
echo Upper Path: %upper_path% 

결과는 다음과 같습니다 :

C:\>cd a 
C:\A>cd b 
C:\A\B>"Current Path.bat" 
Current Path: C:\A\B 
Upper Path: C:\A 

The result of my work-around

답변

4

당신의 접근 방식에 아무 문제가 없다;

for %%x in ("%CD%") do set upper_path=%%~dpx 

두 가지 중 어느 것이 더 : 당신이 for를 사용할 수도 일순간 디렉토리를 변경하는 것을 방지하려면, 예를 들어, 당신이 할 수있는 현재 디렉토리를 변경

pushd .. 
set upper_path=%CD% 
popd 

을 피하기 위해 읽을 수있는 선택입니다.

+1

우선, 귀하의 도움에 감사드립니다. 첫 번째 방법은 당신에게 조언을 잘하고, 두 번째 하나는 제대로 작동하기 전에 조금 수정해야합니다. (작동하기 전에 ~ dpx 전에 2 %가 있어야하는 것처럼 보입니다. 그렇지 않으면 작동하지 않을 수 있습니다. 다음 오류 메시지 :이 명령의 구문이 올바르지 않습니다. %% x in ("% CD %")에 대한 에 대한 설정은 다음과 같아야합니다. upper_path = %% ~ dpx –

+0

@JackChung : 분명히 맞습니다. 답변을 수정했습니다. – AlexP

관련 문제