Tech Info Log

CMD와 PowerShell을 활용한 파일명 일괄 변경 방법 (하위 폴더 포함)

TechLogbook 2025. 1. 13. 18:22

CMD와 PowerShell을 활용한 파일명 일괄 변경 방법 (하위 폴더 포함)

파일을 정리하다 보면 특정 패턴의 파일명을 일괄 변경해야 할 때가 많습니다. Windows의 CMD(명령 프롬프트)와 PowerShell을 활용하면 확장자 변경, 접두사 및 접미사 추가, 문자열 치환, 숫자 순번 붙이기 등의 작업을 손쉽게 수행할 수 있습니다.

1. CMD에서 파일명 일괄 변경

기본적인 파일명 변경

ren oldname.txt newname.txt

oldname.txtnewname.txt로 변경

확장자 변경 (예: .txt → .bak)

ren *.txt *.bak

현재 폴더의 모든 .txt 파일을 .bak로 변경

파일명에 접두사 추가

for %f in (*.txt) do ren "%f" "new_%f"

모든 .txt 파일 앞에 new_ 추가

하위 폴더 포함하여 파일명 변경

for /r %f in (*.txt) do ren "%f" "new_%~nxf"

하위 폴더의 모든 .txt 파일 앞에 new_ 추가

배치 파일(.bat)로 저장하여 실행

@echo off
for /r %%f in (*.txt) do ren "%%f" "new_%%~nxf"
echo 파일명 변경 완료!
pause

위 명령어를 rename_files.bat로 저장 후 실행하면 됩니다.

2. PowerShell에서 파일명 일괄 변경

하위 폴더 포함하여 특정 문자열 변경 (예: old_ → new_)

Get-ChildItem -Path "C:\폴더경로" -Recurse -File | Rename-Item -NewName { $_.Name -replace "old_", "new_" }

하위 폴더 포함하여 확장자 변경 (.txt → .bak)

Get-ChildItem -Path "C:\폴더경로" -Recurse -File -Filter "*.txt" | Rename-Item -NewName { $_.BaseName + ".bak" }

하위 폴더 포함하여 숫자 순번 추가 (file.txt → 001_file.txt)

$index = 1
Get-ChildItem -Path "C:\폴더경로" -Recurse -File -Filter "*.txt" | ForEach-Object {
    Rename-Item $_ -NewName ("{0:D3}_$($_.Name)" -f $index)
    $index++
}

3. CMD vs PowerShell 비교

기능CMDPowerShell
파일명 변경✅ 가능✅ 가능
확장자 변경✅ 가능✅ 가능
문자열 치환❌ 불가능✅ 가능
하위 폴더 포함✅ 가능 (for /r 사용)✅ 기본 지원
숫자 순번 추가❌ 어려움✅ 가능

마무리

파일명을 일괄 변경하려면 간단한 변경은 CMD, 복잡한 패턴 변경은 PowerShell을 활용하는 것이 효과적입니다.

  • CMD 추천: 단순한 확장자 변경, 접두사 추가
  • PowerShell 추천: 문자열 치환, 숫자 순번 추가, 복잡한 규칙 적용

이제 CMD와 PowerShell을 활용하여 파일명을 한 번에 정리해 보세요! 🚀