윈도우 일괄 파일 이름 바꾸는 방법
윈도우 10(혹은 11)을 이용하면서 파일 이름을 한 번에 바꾸어야 할 때가 있습니다. 이때 윈도우에 내장된 파워셸(Powershell)을 이용하여 특정 폴더 내의 파일 이름을 한 번에 바꿀 수 있습니다. 이 글에서 그 방법을 알아봅시다.
목차
윈도우 파일 이름 일괄 바꾸기
파일 이름을 바꾸기 전에 먼저 해당 폴더의 경로 내에 영어와 숫자 이외의 문자가 있는지 확인합니다. 폴더의 경로에 한글이 들어간다면 이 글에서 설명할 방법이 작동하지 않습니다.
저는 폴더를 D 드라이브의 바로 아래에 두고 작업을 시작했습니다. 이 글에서는 D:\tmp를 사용합니다. D 드라이브에서 우클릭을 하고 새 폴더를 선택해 tmp라는 폴더를 하나 만들면 됩니다. 방금 설명했듯이 이 폴더의 이름에는 영어와 숫자만 들어가야 합니다.
이 폴더에 이름을 바꿀 테스트용 텍스트 파일인 ddd.txt, ddd2.txt, ddd3.txt, ddd4.txt를 넣어 두었습니다.

파일 이름을 바꿀 때 사용할 파워셸 명령어는 이것입니다: Get-Item .\*.* | ForEach-Object { Rename-Item $_ ($_.Name -replace "원래 글자", "바꿀 글자") }
윈도우 키를 누르고 powershell을 검색하여 Windows PowerShell을 엽니다.

파워셸을 열면 아래와 같은 화면이 나타납니다. 가린 부분은 제 이름(윈도우 사용자 계정 이름)입니다.

이제 이름을 바꿀 파일이 있는 폴더로 이동해야 합니다. 이 글에서는 방금 만들었듯이 D 드라이브 아래에 tmp라는 폴더가 있다고 가정하겠습니다. 파워셸 창에 cd d:\tmp
라고 입력합니다. 폴더 이름이 다르다면 tmp 부분을 바꾸면 됩니다. D 드라이브가 아닌 E 드라이브 등에 폴더를 만들었다면 d를 e로 바꾸면 됩니다. \
를 키보드에서 찾지 못하겠다면 원화 기호를 찾으면 됩니다.

PS D:\tmp>라고 왼쪽에 표시되면 성공입니다. 이제 위에서 언급한 명령어를 복사하여 붙여넣으면 됩니다. 명령어를 붙여넣을 때는 Ctrl + V를 사용해도 되지만 우클릭을 하면 더욱 편리하게 붙여넣을 수 있습니다.
ddd를 eee로 바꿔 봅시다. Get-Item .\*.* | ForEach-Object { Rename-Item $_ ($_.Name -replace "ddd", "eee") }
를 파워셸 창에 붙여넣고 엔터를 누르면 파일 이름이 바뀝니다.

파일 이름의 모든 ddd가 eee로 바뀐 것을 확인할 수 있습니다.
명령어 설명
파워셸에는 익숙하진 않지만 이 글에서 사용한 파워셸 명령어를 하나하나 뜯어보면서 설명해 보겠습니다. 궁금하지 않으신 분들은 넘겨도 됩니다.
Get-Item .\*.*
은 이 드라이브 내의 모든 파일을 가져옵니다. .\
가 현재 디렉토리(리눅스를 사용하셨다면 익숙하실 겁니다), *.*
가 모든 파일명(*
), 모든 확장자(*
)를 뜻합니다.
|
는 파이프(pipe)입니다. 이전 명령어(파이프 왼쪽의 명령어)가 반환한 결과를 다음 명령어(파이프 오른쪽의 명령어)로 연결시켜 줍니다.
ForEach-Object
는 파이썬 등의 for-in 문법을 생각하면 됩니다. 현재 개체는 $_
로 표현됩니다. 물론 이 상황에서는 현재 개체가 현재 디렉토리의 모든 (가져온) 파일이 됩니다.
Rename-Item
은 이름에서부터 알 수 있듯이 파일의 이름을 바꿉니다.
-replace
에서는 정규식도 사용할 수 있습니다. 바꿀 문자와 바뀔 문자만 입력해도 정규식에는 부합하니까 상관없지만, 더욱 상세하게 파일 이름을 바꾸고 싶다면 원래 글자와 바꿀 글자에 정규식을 사용하면 됩니다.