2013-04-05 3 views
2

상위 디렉토리에있는 일부 파일을 사용하는 배치 파일을 작성하고 있습니다 (Folder1이라고 말하면 됨).배치 파일이있는 디렉토리 위치에서 배치 파일 시작 명령 프롬프트

C:\User\Steve\Foder1\ 

지금 난 내/다른 사람의 컴퓨터의 아무 곳이나 폴더를 붙여 복사 및 배치 스크립트를 실행할 수 있도록 전체 FOLDER_1의 재배치를 만들고 싶어.

D:\User\Random_guy\Folder1\ 

질문은 어떻게에 배치 파일의 명령 프롬프트를 시작하십시오 그렇게 다른 배치 스크립트를 작성하지 않고 (D Random_guy \ 폴더 1 \ \ 사용자)는 상위 디렉토리입니다. 배치 파일에서

답변

4
을 사용하여 배치 파일을 시작

:. 현재 디렉토리를 설정합니다

pushd %~dp0 

폴더가 될 배치 파일이 들어 있습니다. 그런 다음 배치 파일에서 모든 경로가 현재 디렉토리에 상대적인지 확인하십시오.

그러나 배치 파일이 실행 과정에서 다른 디렉토리로 변경되고 정확한 경로를 알지 못해도 배치의 홈 폴더의 내용을 참조 할 수있게하려면 동일한 %~dp0을 경로로 사용하십시오 사용할 파일을 선택하십시오. 예를 들어, 배치 파일과 같은 폴더에서 FileA

"%~dp0FileA" 

참고 FileA 전에 \의 부재로 해결 될 것입니다. %~dp0에 이미 \이라는 꼬리가 포함되어 있으므로 전체 경로가 올바르게 평가 될 것이기 때문입니다. (비록 윈도우가 일반적으로 경로의 중간에있을 때 여러 개의 연속적인 백 슬래시를 무시하기 때문에 "%~dp0\FileA"과 같은 다른 백 슬래시를 넣어도 윈도우는 일반적으로 무시됩니다.)

+0

감사합니다. –

0

%의 CD의 %는 현재 디렉토리/디렉토리 배치가 실행되고 얻는다

0

그래서이 권리를 얻으면

`C:\steve\folder1\yourbat.bat` 

어떤 D:\Random_guyC:\steve\somefiles를 복사 D:\Random_guy\folder1에 현재 디렉토리를 설정해야 실행? MD, COPYCD 명령은 단지 ECHO 에드 것을

@ECHO OFF 
SETLOCAL 
SET subdir=folder1 
SET destdir=%~1 
IF NOT DEFINED destdir ECHO Require destination username&GOTO :EOF 
SET destdir=%~1\%subdir% 
:: Ensure destination exists 
ECHO MD "%destdir%" 2>nul 
SET "sourcefrom=%~dp0.." 
ECHO COPY "%sourcefrom%\filestocopy" "%destdir%\..\" 
ECHO CD /d "%destdir%" 

주, 당신이 그들을 실행하는 ECHO 키워드를 제거해야 할 것입니다.

D:\Random_guy의 배치로 실행