윈도우에서 자소 분리된 파일명 한 번에 고치기 — PowerShell 스크립트

이미 윈도우로 옮긴 폴더 안의 「ㅎㅏㄴㄱㅡㄹ」 파일 이름을 제자리에서 완성형으로 바꾸는 방법입니다. 배치 파일 하나로 끝내는 법과 명령의 한 줄 한 줄을 설명합니다.

고친 날: 2026-10-26

파일이 몇 개라면 한글 파일명 복구 에 끌어다 놓고 고친 이름으로 받으면 됩니다. 그런데 사진 수백 장이나 하위 폴더가 여러 겹인 자료라면 다시 받는 것보다 그 자리에서 이름만 바꾸는 편이 빠릅니다. 윈도우에 기본으로 들어 있는 PowerShell 로 할 수 있고, 따로 설치할 것은 없습니다.

가장 쉬운 방법 — 배치 파일 하나

  1. 도구의 「폴더째 고치기」 탭 에서 hangulfix.bat 를 받습니다.
  2. 이름이 깨진 폴더 안에 넣습니다. 그 폴더와 그 아래 모든 하위 폴더가 대상입니다.
  3. 더블클릭합니다. 바뀐 이름이 한 줄씩 나오고 마지막에 Done: 바꾼 개수 가 표시됩니다.

인터넷에서 받은 배치 파일이라 「Windows의 PC 보호」 창이 뜰 수 있습니다. 추가 정보 → 실행을 누르면 됩니다. 배치 파일은 메모장으로 열어 내용을 확인할 수 있고, 아래 명령과 똑같습니다.

명령으로 직접 하기

배치 파일이 꺼림칙하면 PowerShell 에 직접 붙여 넣어도 됩니다. 폴더를 연 탐색기의 빈 곳에서 Shift + 오른쪽 클릭 → 「여기에 PowerShell 창 열기」(윈도우 11 은 오른쪽 클릭 → 「터미널에서 열기」)를 고른 뒤 아래를 붙여 넣고 Enter 를 누릅니다.

$n=0; Get-ChildItem -LiteralPath . -Recurse -Force | Sort-Object { $_.FullName.Length } -Descending | ForEach-Object { $it=$_; $new=$it.Name.Normalize([Text.NormalizationForm]::FormC); if ($new -cne $it.Name) { try { Rename-Item -LiteralPath $it.FullName -NewName $new -ErrorAction Stop; $n++; Write-Host ('  ' + $new) } catch { Write-Host ('  skip: ' + $new) } } }; Write-Host ''; Write-Host ('Done: ' + $n)

한 부분씩 풀어 보기

부분하는 일
Get-ChildItem -LiteralPath . -Recurse -Force지금 폴더 아래의 파일·폴더를 하위까지 모두 모읍니다. -Force 는 숨김 파일도 포함합니다
Sort-Object { $_.FullName.Length } -Descending경로가 긴 것부터 처리합니다. 하위 항목이 상위 폴더보다 경로가 길기 때문에, 폴더 이름을 바꾸기 전에 그 안의 항목을 먼저 바꿉니다. 순서를 거꾸로 하면 폴더 이름이 먼저 바뀌어 안쪽 경로를 찾지 못합니다
.Normalize([Text.NormalizationForm]::FormC).NET 의 유니코드 정규화로 이름을 NFC(완성형)로 바꿉니다
-cne대소문자까지 구분해 「다르면」 — 이미 완성형인 이름은 건드리지 않습니다
Rename-Item -LiteralPath … -NewName …이름을 바꿉니다. -LiteralPath 라서 이름에 [ ] 같은 와일드카드 문자가 있어도 안전합니다
try … catch같은 폴더에 이미 같은 완성형 이름이 있으면 바꾸지 않고 skip: 으로 알려 줍니다

-ExecutionPolicy Bypass 는 배치 파일 안에서 이 한 번의 실행에만 실행 정책을 건너뛰는 옵션입니다. 시스템 설정은 바꾸지 않습니다. 직접 붙여 넣는 방법은 스크립트 파일을 실행하는 것이 아니라서 실행 정책과 관계없이 동작합니다.

skip 이 나왔다면

skip: 은 대개 같은 폴더에 완성형 이름과 분리형 이름이 둘 다 있다는 뜻입니다. 같은 파일을 맥과 윈도우에서 한 번씩 받아 두 벌이 된 경우가 많습니다. 두 파일을 열어 보고 필요 없는 쪽을 지운 뒤 다시 실행하면 됩니다. 윈도우는 대소문자는 가리지 않지만 정규화 형태는 가리므로 이런 겹침이 생길 수 있습니다.

되돌릴 필요가 없습니다

NFC 는 윈도우가 원래 쓰는 형태라 되돌릴 이유가 없고, 변환은 손실이 없습니다. 이 명령을 여러 번 실행해도 이미 바뀐 이름은 건드리지 않으므로 결과는 같습니다. 그래도 회사 공유 폴더나 동기화 폴더처럼 다른 사람이 함께 쓰는 곳이라면 먼저 사본에서 시험해 보세요. 이름이 바뀌면 동기화 프로그램이 지우고 다시 올리는 것으로 처리할 수 있습니다.

파일 이름에 윈도우 금지 문자가 섞였다면

맥에서는 : ? * " | 같은 글자를 파일 이름에 쓸 수 있지만 윈도우는 허용하지 않습니다. 이런 파일은 보통 옮기는 단계에서 이름이 바뀌거나 복사가 실패합니다. 미리 고치려면 맥 쪽에서 도구 의 「윈도우 금지 문자·예약 이름 고치기」를 켜고 ZIP 으로 묶어 보내세요. 어떤 글자가 왜 안 되는지는 윈도우에서 쓸 수 없는 파일 이름 에 정리했습니다.

압축 파일 안의 이름은?

ZIP 안에 든 파일 이름은 이 명령이 바꾸지 못합니다. 압축을 먼저 풀고 실행하거나, ZIP 을 ZIP 복구 탭 에 놓아 이름을 고친 새 ZIP 으로 바꾸세요. 왜 ZIP 의 이름이 따로 깨지는지는 맥에서 압축한 ZIP 이 깨지는 이유 를 보세요.

도구 열기