programing

현재 배치 파일 디렉터리 가져오기

mailnote 2023. 4. 16. 15:30
반응형

현재 배치 파일 디렉터리 가져오기

처음에 이 주제를 봤는데 잘 이해가 안 되더라고요.

질문:.

배치 파일이 있습니다.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

반응형