윈 도 우 VBScript를 이용해서 파일의 내용을 UTF-8로 변환하는 방법을 알고 싶습니다
2020.04.20 19:24
Windows에서 다수의 파일들의 인코딩을 한번에 변환할 방법을 찾던 도중, VBScript에 생각이 미쳤습니다.
SendTo에 바로가기로 넣어두고 쓸 생각입니다.
TXT, LRC 등의 텍스트형 파일만을 인풋으로 받되, 확장자로 구분했으면 좋겠습니다. 그러면 나중에 '텍스트 파일이긴 한데, 이런 확장자도 처리했으면 좋겠다'같은 생각이 들 때 파일을 조금 수정하면 해당 확장자의 파일들도 처리할 수 있을테니까요.
변환할 인코딩도 VBS 파일 내부에서 변경할 수 있으면 더욱 좋을 것 같습니다. 가령 어떤 때에는 UTF-8로 변경해야 하지만 어떨 때에는 ANSI(CP949)로 변환해야 할수도 있고 EUC-KR로 변경해야 할 수도 있을것입니다. CP949는 EUC-KR의 확장형이지만 서로 다른 점이 있어서 구분이 되긴 해야할테니까요.
기본적으로는 UTF-8로 변경하는 것이 목적입니다만, CP949로 변경이 필요하다면 VBS 파일을 수정해서 목적 인코딩을 바꿀 수 있으면 좋겠습니다.
다수의 파일들을 한번에 변환하는 것이 목적이므로 다음과 같은 상황이 발생할 수 있습니다.
- 선택된 것이 파일(들)일 경우: 해당 파일들을 VBS 파일 내부에 명시된 인코딩으로 변경합니다. 파일 내용을 재인코딩하고 덮어씁니다.
- 선택된 것이 폴더(들)일 경우: 해당 디렉토리가 하위 디렉토리를 포함하고 있다면(= 안에 폴더가 있다면) 메세지창에서 '하위 디렉토리가 존재합니다. 하위 디렉토리 내부의 파일/폴더들도 처리합니까?'라는 메세지를 출력하고, '예'를 선택한 경우에는 재귀적으로 파내려가서 파일들을 처리합니다. '아니오'를 선택하면 선택한 폴더(디렉토리) 내에 있는 파일들만 처리합니다.
- 선택된 것이 폴더(들)와 파일(들)일 경우: 해당 파일들을 처리한 후, 폴더 내부에 하위 디렉토리(폴더)가 존재하면 2번째 상황처럼 메세지창으로 묻습니다. '예'라면 하위 디렉토리의 모든 파일들을 처리하고, '아니오'라면 선택된 폴더(들)의 파일만 처리하는 식입니다.
작업을 완료하면 메세지창으로 '작업을 완료했습니다'라는 메세지가 나타나면 작업 완료를 알아차리기 쉬울 것 같습니다. 가능하다면 진행도를 나타내는 창도 나왔으면 좋겠지만 그건 욕심같습니다.
조언만이라도 괜찮습니다. 감사합니다.
댓글 [6]
-
빨강모자 2020.04.20 19:50 -
메리아 2020.04.20 21:53
올려주신 링크는
웹서버로서의 기능에 관련한거 아닌가요?
이 경우에는 그닥 도움이 안될듯 합니다. ㅠㅠ
-
메리아 2020.04.20 21:59
솔직히 내용이 좀 복잡해서 잘 이해를 못하겠습니다.
몇백개 이내라면 그냥 에디트 플러스를 이용해서 변환하시는게 좋지 않을까요?
저는 에디트 플러스에 변환할 파일 한꺼번에 던져넣고 "다수 인코딩 변환"을 이용합니다.
솔직히 대개 일회성 작업들이라...
여러 하위폴더로 나뉜경우에는
search everything으로 검색하고
그걸 에디트 플러스에 던져주고, 똑같이 일괄변환...
저는 변환보다 수정날짜가 변경되는게 더 신경쓰이더군요.
변환은 보통 구 작업까지 손을 뻗는 경우가 많은데
인코딩 변환밖에 안했는데 신규작업인거마냥 변환되는게 신경쓰이거든요.
그래서 전 수정날짜 변환 프로그램으로
먼저 거기서 수정날짜 변환해버리고
에디트 플러스에서 인코딩 변환시킨후
수정날짜 변환 프로그램에서 "복구" 버튼으로 날짜를 되돌립니다.
이러면 의도치 않은 날짜갱신을 회피할 수 있더군요.
-
ViArPl 2020.04.21 18:28
에디트 플러스를 쓰는 방법도 있겠네요. 감사합니다. 한번 나중에 시도해보겠습니다.
지금은 그냥 Notepad++로 일일히 다 열어서 수정했습니다.
-
지후빠 2020.04.21 21:22
Notepad++ 은 https://hothoony.tistory.com/397 참고하시면 좋았을 듯 합니다.
시간되면 VBScript 만들어 보려했더니...
-
ViArPl 2020.04.22 03:03
Everything으로 디렉토리 검색해서 특정 확장자 파일들만 리스트 뽑아서 NPP로 수정했었는데, 시작 디렉토리를 집어줘야 하는 저 스크립트는 쓰기가 힘들더라고요. 제가 파이썬에 익숙치않은 것도 있지만, 저 스크립트를 수정해서 쓰려고 해도 당췌 어떻게 할 줄 몰라 그냥 NPP에서 'Save as UTF-8'에다가 단축키 집어넣고 손으로 일일히 단축키 쳐가면서 했습니다.
참고페이지 : http://www.devholic.net/1000359
둘러보시면 도움이 되실런지요.