Ao executar determinados arquivos (principalmente em lote) usando o PsExec, recebo esses símbolos estranhos antes do meu comando. Meu pensamento inicial era que eu estava usando codificação incorreta, mas após a verificação, percebi que todos os meus arquivos estavam usando UTF-8.
25
Respostas:
Isso tem duas causas:
O cmd.exe não suporta UTF-8. Ele sempre usa uma das codificações de byte único, geralmente denominadas "OEM" - cp437, cp775 e assim por diante, dependendo das configurações regionais do sistema.
(Eu esperava que ele também suporte UTF-16, mas aparentemente não; nem mesmo se eu adicionasse a lista técnica de UTF-16.)
Seu editor de texto está adicionando uma "marca de ordem de bytes" UTF-8 (bytes
EF
BB
BF
) ao início de todos os arquivos UTF-8.Quando o cmd.exe lê o seu script, ele não sabe o que fazer com a marca - ele vê a BOM como três caracteres comuns do cp437
’
╗
┐
e tenta usá-los como parte do nome do comando.Configure seu editor para parar de adicionar a BOM aos arquivos codificados em UTF-8. (Isso só faz sentido no UTF-16 e é muito inútil no UTF-8.)
uh
o que
fonte
Para responder ainda mais à @ dsolimano , se você estiver usando especificamente o Visual Studio , e no meu caso é 2013 , eu a corrigi fazendo o seguinte:
Agora, quando você abre um arquivo .bat no Visual Studio , você será solicitado inicialmente com:
Você desejará detalhar as opções até chegar à opção DOS do seu idioma:
Clique em OK para concluir a abertura do arquivo.
Ok, mesmo que deva ser bastante óbvio neste momento, se você puder ver os

caracteres no início do arquivo, convém removê-los e salvar o arquivo, agora com a codificação correta. É isso que impede que você seja solicitado novamente na próxima vez.Com tudo isso, você ficará feliz em saber que agora pode exibir , editar e salvar seus arquivos .bat no Visual Studio para que o cmd.exe não for mais o erro hediondo mencionado acima:
fonte
Essas são marcas de ordem de bytes Unicode . Cmd.exe não os entende. Se você salvar seus arquivos novamente no Bloco de Notas com codificação ANSI, isso deverá corrigir o problema.
Por exemplo, eu criei este arquivo em lotes:
Primeiro eu salvo com codificação UTF-8
Então com Unicode
E finalmente com ANSI
fonte
Conforme explicado anteriormente, esse caractere é o BOM de caractere unicode (Byte Order Mark) usado como uma assinatura e que o cmd.exe não reconhece.
Você pode excluí-lo com segurança de várias maneiras.
Achei muito fácil fazer o seguinte:
fonte