ANSI 코드 페이지에서 Windows“dir”을 파이프하는 방법


3

이것은 Windows XP와 Windows 7 모두에 적용됩니다.

내 파일 중 일부에는 유럽 문자 (예 : a-diaeresis라고도하는 독일어 a- 움라우트)의 이름이 있습니다.

Windows 탐색기와 "dir"명령에 대한 응답으로 명령 셸 (cmd.exe) 창에 올바르게 표시됩니다.

그러나 "dir"명령이 파일을 가리키는 경우

dir > file.txt

해당 파일의 유럽 문자는 DOS 코드 페이지로 표시됩니다. 예를 들어, a- 움라우트는 10 진수 132 (16 진 0x84)로 표시됩니다. 이것은 내가 원하는 것이 아닙니다. 파일이 ANSI 코드 페이지에 있기를 원합니다. 예를 들어 a- 움라우트는 십진수 228 (16 진수 0xE4)입니다.

"cmd /?"명령을 실행 라인을 포함한 도움말 정보를 생성합니다

/A      Causes the output of internal commands to a pipe or file to be ANSI

이것은 내가 원하는 것과 정확히 같습니다. 그러나 명령 순서

cmd /A
dir > file.txt
exit

또는 동등한 단일 명령 행

cmd /A /C dir > file.txt

이전과 정확히 동일한 file.txt를 생성합니다. DOS 코드 페이지에 Europoean 문자가 여전히 있습니다.

그래서 제 질문은 ANSI 코드 페이지에 파일을 작성하기 위해 "dir"을 어떻게 얻을 수 있습니까?

  • 풍부한

3
/UANSI 대신 유니 코드 ( ) 플래그를 사용해 보셨습니까 ?
획기적인

OEM에서 ANSI로 전환하는 것은 DOS에서 Windows 3.1로 업그레이드하는 것과 같습니다 ... 결국 더 많은 고통을 초래할 것입니다. 가능하면 유니 코드를 사용하십시오.
grawity

유니 코드에는 적합하지만 여러 가지 이유로 1 바이트 문자를 사용하는 기존 스크립트와 인터페이스해야합니다.
Rich Pasco

답변:


3

"상자에서"쉬운 방법이 있다고 생각합니다

chcp 1252
dir > file.txt

0

당신은 편지 "A"에 의해 정원 길을 이끌고 있습니다. 이 /A옵션은 "ANSI"를 "OEM"코드 페이지와 구별하지 않습니다. 16 비트 유니 코드 ( /U옵션) 와 8 비트 1 바이트 / 멀티 바이트 문자 세트를 구별합니다 . 와 같은 Win32 프로그램에서 CMD콘솔 로의 8 비트 SBCS / MBCS 출력 은 "OEM"코드 페이지에서 처리됩니다.


좋아, JdeBP, 나는 당신이 말하는 것을 이해합니다. 도움말 정보는 확실히 오도됩니다. 그러나 "DIR"명령의 출력을 OEM DOS 코드 페이지 (내 경우에는 850)가 아닌 ANSI 코드 페이지 (Windows의 표준 ISO 8859-1)로 만들려면 어떻게해야합니까? 룩업 테이블이있는 간단한 EXE 필터를 작성한 다음 DIR을 파이프로 파이프하거나 DIR을 완전히 대체 할 수 있다고 생각합니다. 처음에 원하는 것을 수행합니다. 그러나 더 쉬운 방법이 있습니다!
Rich Pasco

한 가지 방법을 찾았습니다. 유틸리티 cp850win을 다운로드 한 후 다음 명령을 실행하십시오 dir | cp850win > file.txt
Rich Pasco
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.