HOWTO · Batch
배치 스크립트에서 파일 이름을 바꾸는 방법
Windows 배치 스크립트에서 ren, rename, 와일드카드, 경로, 변수 및 for 루프를 사용해 파일 이름을 바꾸는 방법을 설명합니다.
이 페이지의 내용
Windows 배치 파일에서 ren(또는 rename) 명령을 사용하면 파일을 이동하지 않고 이름을 바꿀 수 있습니다. 이 명령은 cmd.exe에서 작동하며 .bat 또는 .cmd 파일로 일치하는 파일에 반복 적용할 수 있습니다. 아래 예제는 원본 경로를 지정하지 않으면 현재 디렉터리를 사용합니다.
배치 스크립트의 기본 이름 바꾸기 명령
구문은 다음과 같습니다.
ren <old-name> <new-name>
rename은 ren과 같은 의미의 긴 표기입니다. 공백이 포함된 이름은 따옴표로 묶습니다.
@echo off
ren "old report.txt" "new report.txt"
성공해도 cmd.exe는 보통 메시지를 출력하지 않습니다. dir로 결과를 확인하거나 새 이름이 존재하는지 검사하세요. 대상은 두 번째 경로가 아니라 새 이름입니다. ren으로 파일을 다른 디렉터리나 드라이브로 이동할 수 없습니다. 디렉터리도 변경해야 한다면 move를 사용하세요.
와일드카드로 여러 파일 이름 바꾸기
와일드카드를 사용하면 하나의 명령이 여러 원본 이름과 일치할 수 있습니다. 다음 명령은 현재 디렉터리의 모든 .txt 파일 확장자를 바꾸면서 각 기본 이름을 유지합니다.
@echo off
ren "*.txt" "*.bak"
예를 들어 notes.txt는 notes.bak이 되고 report.txt는 report.bak이 됩니다. 대상의 *는 원본 기본 이름을 나타내며 모든 파일에 문자 그대로 *.bak이라는 이름을 지정하지 않습니다. ? 와일드카드는 한 문자 위치와 일치하므로 ren "log?.txt" "archived-?.txt"처럼 패턴을 좁힐 수 있습니다.
특정 디렉터리의 파일 이름 바꾸기
원본에는 드라이브와 디렉터리를 포함할 수 있습니다.
@echo off
ren "C:\Work\incoming\report.txt" "report-old.txt"
이름을 바꾼 파일은 C:\Work\incoming에 남습니다. ren "C:\Work\incoming\report.txt" "C:\Work\archive\report.txt"처럼 두 번째 인수에 디렉터리를 쓰지 마세요. 이는 이동이며 ren 구문에 포함되지 않습니다. 원본 디렉터리를 변경할 수 있는 권한으로 배치 파일을 실행하세요.
변수와 for 루프 사용
다른 명령이나 사용자 입력으로 이전 이름 또는 새 이름을 만들 때 변수가 유용합니다. 값에 불필요한 공백이 들어가지 않도록 변수 대입을 따옴표로 묶습니다.
@echo off
set "oldname=old report.txt"
set "newname=reviewed report.txt"
ren "%oldname%" "%newname%"
모든 .txt 파일에 접두사를 추가하려면 for 루프를 사용합니다. %%F는 배치 파일에서 사용하는 루프 변수 형식이고 %%~nxF는 원래 이름과 확장자로 확장됩니다.
@echo off
for %%F in (*.txt) do ren "%%F" "new_%%~nxF"
먼저 디렉터리 복사본에서 테스트하세요. 대상이 이미 있으면 이름 바꾸기가 실패할 수 있고, 원본 패턴과 일치하는 파일이 없으면 아무것도 바뀌지 않습니다. 루프 도중 충돌이 발생할 수도 있으므로 명령 후 디렉터리를 확인하고 중요한 이름은 백업하세요.
자주 묻는 질문
ren과 rename은 서로 다른 명령인가요?
아니요. cmd.exe에서 rename은 ren의 긴 형식입니다.
이름 바꾸기가 실패한 이유는 무엇인가요?
원본이 존재하는지, 대상이 이미 사용 중이 아닌지, 따옴표가 올바른지, 배치 파일이 디렉터리에 접근할 수 있는지 확인하세요. 원본이 없으면 새 파일을 만들지 않고 오류가 발생합니다. ren은 원본 디렉터리 안에서 이름을 바꾸므로 대상 경로도 잘못된 값입니다.
디렉터리 이름도 바꿀 수 있나요?
예. ren으로 디렉터리 이름도 바꿀 수 있지만 대상에 다른 경로를 지정할 수는 없습니다. 이동하려면 move를 사용하세요.