Você escreveu seu script de comando no UTF-8. Esses três caracteres são a codificação UTF-8 da Marca de Ordem de Byte Unicode, U+FEFF
, exibida na página de códigos 437. Scripts para o processador de comandos da Microsoft são sempre tratados pelo processador como se codificados na página de códigos "OEM" atual 437 no seu caso), e deve ser escrito como tal.
O motivo pelo qual tudo ficou bem no Bloco de notas é que o Notepad reconhece as BOMs e decodifica o arquivo de acordo. O que o Notepad estava mostrando não era o que o processador de comando realmente vê no arquivo.
Note que o bloco de notas não tem capacidade de ler / gravar arquivos em páginas de códigos OEM . Se você estiver usando caracteres em scripts de comando que estão fora do subconjunto ASCII comum a páginas de códigos "OEM" e "Windows" (felizmente, não é o caso aqui), você não pode usar o Bloco de notas para editar esses scripts (a menos que você seja capaz de traduzir de "OEM" para páginas de código "Windows" em sua cabeça enquanto digita).
Mesmo assim, você terá problemas quando o Notepad anexar silenciosamente marcas de ordem de byte a seus arquivos quando você acidentalmente salvar como UTF-8 em vez de na página de código atual do Windows (que o Notepad denomina "ANSI"). Isso é quase certamente o que aconteceu aqui, de fato.