사용하던 PC를 용도변경을 진행하며,
새 컴퓨터를 구매하게 되었습니다.
근데 기존 python 파일도 그렇고,
배치파일 만들었던것도 그렇고
죄다 한글이 깨지더라구요..

윈10에서 작업하다가
새 컴퓨터가 윈11이라 그런건지..
무튼 이유나 방법은 많겠지만
개인적으로 일단 편해야하고 빠르게 되야하기 때문에
배치파일로 인코딩을 변경하기로 하였습니다.
명령어는 powershell 명령어로 아래와 같은 방식입니다.
Get-Content -Raw -Encoding UTF8 "기존파일경로" | Out-File -Encoding Default "새 파일경로"
예를 들어 C:\TEMP\utf8file.txt 라는 파일을
ansi 인코딩으로 바꿔서 저장하고 싶다면,
Get-Content -Raw -Encoding UTF8 "C:\temp\utf8file.txt" | Out-File -Encoding Default "C:\new\ansifile.txt"
간단하죠?
결과물을 보자면

저는 C에 무슨 권한문제가 또 나와서 일단 문서폴더에 작성했는데,
이것도 바꿔야하네요..ㅎ
무튼 인코딩을 변경하는건 완료하였습니다.
이제 여기서 배치파일로 만들건데,
이왕이면 폴더의 파일들이 일괄로 변경되면 좋겠죠?
@echo off
setlocal
REM ====== 사용자 입력 ======
set "ROOT=%~1"
if not defined ROOT set "ROOT=%cd%"
set "PAT=%~2"
if not defined PAT set "PAT=*"
set "RECUR=%~3"
REM ====== 출력 폴더/파일 ======
set "OUTDIR=%ROOT%\..\new"
if not exist "%OUTDIR%" mkdir "%OUTDIR%" 2>nul
set "OUT=%OUTDIR%\filelist.txt"
if exist "%OUT%" del "%OUT%" 2>nul
REM ====== 목록 생성 ======
if /i "%RECUR%"=="recursive" (
for /r "%ROOT%" %%F in (%PAT%) do (
echo %%~fF >> "%OUT%"
)
) else (
for %%F in ("%ROOT%\%PAT%") do (
echo %%~fF >> "%OUT%"
)
)
echo 목록 저장 완료: "%OUT%"
echo.
REM ====== 한 줄씩 처리 ======
for /f "usebackq delims=" %%L in ("%OUT%") do call :process "%%~L"
echo 처리 완료.
endlocal
goto :eof
:process
REM %1 = 파일 경로
set "FILE=%~1"
set "NAME=%~nx1"
echo 처리 중: "%FILE%"
powershell -Command ^
"Get-Content -Raw -Encoding UTF8 '%FILE%' | Out-File -Encoding Default '%OUTDIR%\%NAME%' "
::echo "Get-Content -Raw -Encoding UTF8 '%FILE%' | Out-File -Encoding Default '%OUTDIR%\%NAME%' "
goto :eof
네.
사용법은
배치파일명.bat "폴더경로" [패턴:txt,bat,py 등] [recursive]
*폴더 경로는 기존 UTF8 파일이 있는곳으로 넣어주시면 되고,
*패턴은 기본적으로는 전체로 잡혀있는데,
txt나 py 등 입맛에 맞게 변경할 수 있습니다.
*recursive 사용 시 하위 폴더 포함.
단, 이동 될 폴더에는 일괄입니다.
하여 incoding.bat "C:\Users\user\Documents\temp"
요렇게 넣으면 "C:\Users\user\Documents\new" 밑에 리스트와 인코딩 된 파일이 생기는겁니다.

그리고, 반대의 경우(ansi > UTF8).
위 파일에서 가장 아래쪽.
"Get-Content -Raw -Encoding UTF8 '%FILE%' | Out-File -Encoding Default '%OUTDIR%\%NAME%' " 내용을
"Get-Content '%FILE%' | Set-Content -Encoding utf8 '%OUTDIR%\%NAME%' "
로 바꿔주면 됩니다.