Eu acho que é fácil, "da caixa"
chcp 1252
dir > file.txt
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?
Eu acho que é fácil, "da caixa"
chcp 1252
dir > file.txt
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".
Tags command-line windows ansi dir