Como canalizar o Windows “dir” na página de códigos ANSI

3

Isso se aplica ao Windows XP e ao Windows 7.

Alguns dos meus arquivos têm nomes com caracteres europeus, por exemplo, o trema alemão, também conhecido como a-diaeresis.

Eles são exibidos corretamente no Windows Explorer e também em uma janela do shell de comando (cmd.exe) em resposta ao comando "dir".

No entanto, se o comando "dir" for direcionado para um arquivo, por exemplo,

dir > file.txt

então os caracteres europeus nesse arquivo são representados em uma página de códigos do DOS; por exemplo, o a-umlaut é representado como decimal 132 (hex 0x84). Isso não é o que eu quero. Eu quero que o arquivo esteja na página de códigos ANSI, onde, por exemplo, um-umlaut é decimal 228 (hex 0xE4).

Emitindo o comando "cmd /?" resulta em informações de ajuda, incluindo a linha

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

Isso soa exatamente como eu quero. No entanto, a sequência de comandos

cmd /A
dir > file.txt
exit

ou a linha de comando única equivalente

cmd /A /C dir > file.txt

produz exatamente o mesmo arquivo.txt de antes; com seus caracteres Europoean ainda na página de código do DOS.

Então, minha pergunta é: como posso obter "dir" para gravar um arquivo na página de códigos ANSI?

  • Rich
por Rich Pasco 14.08.2011 / 17:12

2 respostas

3

Eu acho que é fácil, "da caixa"

chcp 1252
dir > file.txt
    
por 26.06.2012 / 20:34
0

Você está sendo conduzido pelo caminho do jardim pela letra "A". A opção /A não está distinguindo "ANSI" das páginas de códigos "OEM". Ele está distinguindo conjuntos de caracteres de byte único / múltiplo de 8 bits do Unicode de 16 bits (a opção /U ). SBCS de 8 bits A saída / MBCS de um programa Win32, como CMD , para um console é manipulada na página de código "OEM".

    
por 15.08.2011 / 03:25