배치 파일의 현재 디렉토리를 찾고 경로에 사용하려면 어떻게합니까?
소프트웨어 작업을 실행하기 위해 고객에게 배포 할 배치 파일이 있습니다.
우리는 그것들을 폴더로 또는 .zip
파일과 함께 배포합니다 . 내부에는 배치 파일과 배치를 실행하는 데 필요한 파일이있는 다른 폴더가 있습니다.
일반적으로 배치를 만들 때 파일이있는 경로를 입력합니다. 하지만 파일이 어디에 있는지 모르겠습니다. 파일은 여전히 마스터 폴더에 보관되지만 파일을 실행하려면 배치에서 해당 폴더를 찾도록해야합니다.
예를 들어, 바탕 화면에 마스터 폴더가 있고이를 실행하는 경우 실행하는 것과 같은 것이어야합니다 "C:\Users\Username\Desktop"
. 해당 위치에 배치 CD가 있습니다.
하지만 문서에서 실행하면 어떨까요? 사용자 이름을 모르기 때문에 어떻게 든 일괄 처리가 이것을 찾도록해야합니다. 모든 코드 및 / 또는 지침이 좋습니다.
bat 파일을 시작할 때 작업 디렉토리는 해당 파일이 시작된 디렉토리 ( "마스터 폴더")이므로 파일이 어디에 있는지 알 필요가 없습니다.
.\mydocuments\folder\mybat.bat
.\mydocuments\folder\subfolder\file.txt
그리고 사용자는 "mybat.bat"를 시작하고 작업 디렉토리는 ". \ mydocuments \ folder"이므로 스크립트에 하위 폴더 이름 만 작성하면됩니다.
@Echo OFF
REM Do anything with ".\Subfolder\File1.txt"
PUSHD ".\Subfolder"
Type "File1.txt"
Pause&Exit
어쨌든 작업 디렉토리는 "% CD %"변수에 저장되고 bat가 시작된 디렉토리는 인수 0에 저장됩니다. 그런 다음 컴퓨터의 작업 디렉토리를 알고 싶다면 다음을 수행 할 수 있습니다.
@Echo OFF
Echo Launch dir: "%~dp0"
Echo Current dir: "%CD%"
Pause&Exit
ElektroStudios 답변은 약간 오해의 소지가 있습니다.
"bat 파일을 시작할 때 작업 디렉토리는 시작된 디렉토리입니다."이것은 사용자가 탐색기에서 배치 파일을 클릭하면 참입니다.
그러나 CALL 명령을 사용하여 다른 스크립트에서 스크립트를 호출하면 현재 작업 디렉토리가 변경되지 않습니다.
따라서 스크립트 내에서 % ~ dp0subfolder \ file1.txt를 사용하는 것이 좋습니다.
또한 현재 스크립트가 현재 작업 디렉토리에 없으면 % ~ dp0이 백 슬래시로 끝납니다. 따라서 후행 백 슬래시가없는 디렉토리 이름이 필요한 경우 다음과 같이 사용할 수 있습니다.
call :GET_THIS_DIR
echo I am here: %THIS_DIR%
goto :EOF
:GET_THIS_DIR
pushd %~dp0
set THIS_DIR=%CD%
popd
goto :EOF
당신은 또한 할 수 있습니다
Pushd "%~dp0"
또한 unc 경로에서 실행되는 것을 고려합니다.
yourbatch에서 시도
set "batchisin=%~dp0"
변수를 배치 위치로 설정해야합니다.
'Program Tip' 카테고리의 다른 글
"Hello"와 같은 Java 인쇄 따옴표를 어떻게 만들 수 있습니까? (0) | 2020.11.07 |
---|---|
헤드 라인에서 굵은 글씨를 제거하는 방법? (0) | 2020.11.07 |
Jquery 입력 배열 필드 가져 오기 (0) | 2020.11.06 |
Owin Twitter 로그인-유효성 검사 절차에 따라 원격 인증서가 유효하지 않습니다. (0) | 2020.11.06 |
런타임에 하위 클래스가 클래스의 인스턴스인지 확인하는 방법은 무엇입니까? (0) | 2020.11.06 |