본문 바로가기
운영체제/Windows

배치 파일에서 명령 인수 활용법

by eteo 2024. 12. 13.

 

 

 

명령 인수(또는 매개변수)는 배치 파일을 실행할 때 외부에서 값을 전달할 수 있는 방법이다. 배치 파일 내에서 %1, %2, %3 등으로 인수에 접근할 수 있고, 여기서 각 숫자는 전달 된 인수의 순서를 의미한다.

 

 

- 사용 예시

@echo off

:: 인수 확인
if "%1"=="" (
    echo 파일 이름을 입력해 주세요.
    exit /b
)

if "%2"=="" (
    echo 대상 폴더를 입력해 주세요.
    exit /b
)

:: 인수로 받은 파일을 지정된 폴더로 복사
set "source=%1"
set "destination=%2"

copy "%source%" "%destination%"
echo 파일 %source%를 %destination%로 복사함.
batchfile.bat test.txt C:\Backup

 

 

 

- 인수 확장 옵션

  • %~1
    • %1의 쌍따옴표를 제거한 값을 반환한다. 
    • 배치 파일의 인수는 공백이 포함된 경로나 문자열이 사용될 때가 많아서, 두 개 이상의 인수로 해석되지 않도록 쌍따옴표로 감싸서 전달하는 경우가 일반적이다. 이때 %~1을 사용하면 쌍따옴표가 포함된 경우 쌍따옴표를 제거한 값을 반환하고, 쌍따옴표가 없는 경우 인수 값을 그대로 반환한다.
    • batch.bat "C:\Program Files\file.txt"로 실행하면, %~1은 C:\Program Files\file.txt 로 반환된다.
  • %~f1
    • %1의 절대경로(전체 경로를 포함한 값)를 반환한다. 
    • batch.bat file.txt로 실행하면, %~f1은 C:\현재경로\file.txt가 된다.
  • %~d1
    • %1의 드라이브 문자만 반환한다.
    • batch.bat C:\path\file.txt로 실행하면, %~d1은 C:로 반환한다.
  • %~p1
    • %1의 드라이브 문자와 파일 이름을 제외한 경로(디렉터리)만 반환한다.
    • batch.bat C:\path\to\file.txt로 실행하면, %~p1은 \path\to\로 반환한다.
  • %~n1
    • %1의 파일 이름만 반환한다. (확장자 제외)
    • batch.bat C:\path\file.txt로 실행하면, %~n1은 file로 반환한다.
  • %~x1
    • %1의 파일 확장자만 반환한다.
    • batch.bat C:\path\file.txt로 실행하면, %~x1은 .txt로 반환한다.