현재 배치 파일 디렉터리 가져오기
처음에 이 주제를 봤는데 잘 이해가 안 되더라고요.
질문:.
배치 파일이 있습니다.D:\path\to\file.bat
다음 내용이 포함되어 있습니다.
echo %cd%
pause
출력은 다음과 같습니다.
C:\
그럴 것이다.D:\path\to
내가 뭘 잘못하고 있지?
시스템 읽기 전용 변수%CD%
는 배치 파일 위치가 아닌 배치 발신자의 경로를 유지합니다.
사용자가 입력한 배치스크립트 자체의 이름을 취득할 수 있습니다.%0
(예:scripts\mybatch.bat
파라미터 확장자를 여기에 적용할 수 있습니다.%~dp0
는 드라이브와 경로를 배치 스크립트로 되돌립니다(예:W:\scripts\
)와%~f0
는 풀 패스명을 반환합니다(예:W:\scripts\mybatch.cmd
).
다음 구문을 사용하여 배치스크립트와 같은 폴더 내의 다른 파일을 참조할 수 있습니다.
CALL %0\..\SecondBatch.cmd
서브루틴에서도 사용할 수 있습니다.Echo %0
콜라벨을 알려드리지만echo "%~nx0"
는 배치 스크립트의 파일 이름을 제공합니다.
언제?%0
변수를 확장하고 결과를 따옴표로 묶습니다.
매우 심플:
setlocal
cd /d %~dp0
File.exe
.bat 파일 내:
set mypath=%cd%
이제 변수를 사용할 수 있습니다.%mypath%
파일 경로를 참조하다.bat
경로가 올바른지 확인하려면:
@echo %mypath%
예를 들어 다음과 같은 파일이 있습니다.DIR.bat
다음과 같은 내용으로
set mypath=%cd%
@echo %mypath%
Pause
디렉토리에서 실행하다g:\test\bat
는 DOS 명령창에서 그 경로를 에코합니다.
배치 파일 맨 위에 있는 것은 다음과 같습니다.템플릿 폴더에서 복사/붙여넣기만 하면 됩니다.
@echo off
:: --HAS ENDING BACKSLASH
set batdir=%~dp0
:: --MISSING ENDING BACKSLASH
:: set batdir=%CD%
pushd "%batdir%"
현재 배치 파일의 경로를 %batdir%로 설정하면 이 배치 파일의 변경 위치에 관계없이 현재 배치 파일의 후속 stmts에서 호출할 수 있습니다.PUSHD를 사용하면 POPD를 사용하여 이 배치 파일의 경로를 원래 %batdir%로 빠르게 설정할 수 있습니다.주의: %batdir%를 사용하는 경우ExtraDir 또는 %batdir%\경로에 공백이 있는 경우(예: "%batdir%") ExtraDir(위에서 사용한 버전에 따라 백슬래시가 종료되는지 여부에 따라 다름) 전체 문자열을 큰따옴표로 묶어야 합니다.[ Extra Dir ])PUSHD %~dp0은 언제든지 사용할 수 있습니다.[syslog: // ss64.com/ nt/ syntax-syslogs .syslogs ]에는 (%~) 파라미터가 더 있습니다.
행의 선두에 (::)를 사용하면, 코멘트 행이 됩니다.보다 중요한 것은 :: 를 사용하면 리다이렉터, 파이프, 특수 문자(< > | 등)를 코멘트에 포함할 수 있습니다.
:: ORIG STMT WAS: dir *.* | find /v "1917" > outfile.txt
물론 Powershell은 이것과 더 많은 것을 한다.
언급URL : https://stackoverflow.com/questions/17063947/get-current-batchfile-directory
'programing' 카테고리의 다른 글
ASP용 Windows Azure 또는 Amazon EC2.NET MVC 개발? (0) | 2023.04.21 |
---|---|
SQL 데이터베이스에 함수가 있는지 확인하는 방법 (0) | 2023.04.16 |
Git 저장소에 .gitignore를 커밋해야 합니까? (0) | 2023.04.16 |
WPF의 '도움말' 메뉴 항목을 오른쪽 정렬하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
MVVM을 사용한WPF 대화상자 처리 (0) | 2023.04.16 |