본문 바로가기

OS/Windows

Batch 파일 실행 시 한글 깨짐 방지

반응형

 개요


아래와 같은 명령어를 실행한다고 해 봅시다.

@echo off

@set YEAR=%date:~0,4%
@set MONTH=%date:~5,2%
@set DAY=%date:~8,2%
@set HOUR=%time:~0,2%
@set MINUTE=%time:~3,2%
@set SECOND=%time:~6,2%
@set POSTFIX=%YEAR%-%MONTH%-%DAY%_%HOUR%-%MINUTE%-%SECOND%

@set SSID=wifi_xxx

rem 연결된 SSID 확인
for /f "tokens=3" %%i in ('netsh wlan show interface ^| findstr /i "SSID"') do set "myssid=%%i" & goto next
:next
echo %myssid%
set "myssid=%myssid: =%"

rem 연결상태 확인
for /f "tokens=3" %%i in ('netsh wlan show interface ^| findstr /i "상태" ^| findstr /i "연결됨"') do set "status=%%i" & goto next2
:next2

echo "%status%"

if /i "%status%"=="연결됨" (
  echo "Status Good"
  echo %POSTFIX%_good >> a.out
) ELSE (
  echo "Reconnect"
  netsh wlan connect name="%SSID%"
  echo %POSTFIX%_reconnect >> a.out
)

한글이 들어 간 부분 때문에 명령어가 제대로 실행되지 않는 경우가 발생합니다.


 해결방안

파일의 인코딩 형식을 바꿔 줍니다.
윈도우에서 bat 파일 생성 시 기본으로 utf-8형식으로 생성되어 있을겁니다.
utf-8형식을 ANSI로 변경해 줍니다.

텍스트편집기(아래는 Notepad++입니다.)를 사용하여 인코딩을 ANSI로 변경한 뒤 저장 버튼을 눌러줍니다.


메모장(Notepad)일 경우
파일 > 다른이름으로 저장 > 인코딩을 선택하여 ANSI를 선택 후 저장 버튼을 눌러줍니다.

메모장 인코딩 변경

저장 버튼을 눌러줍니다.

다른 이름으로 저장 확인이 뜹니다. 예를 눌러 저장하면 ANSI로 파일형식이 변경됩니다.

 결과 확인

한글이 들어간 명령어를 실행해 보겠습니다.


정상적으로 잘 실행되네요~

반응형
댓글