É porque quando você salva um arquivo de texto no Visual Studio ele o salva em codificação UTF-8 , incluindo uma marca de pedido de byte (BOM) no início.
Como a página de códigos padrão da linha de comando não é UTF-8, você vê os caracteres.
Você pode definir a linha de comando para suportar o UTF-8 emitindo o comando chcp 65001
, mas para garantir a compatibilidade, é melhor garantir que seu arquivo de texto / lote seja salvo com codificação ANSI padrão em vez de UTF-8.
Para isso, veja esta outra questão SU existente: Visual Studio 2010: É possível forçar o editor a usar ANSI em vez de UTF-8? , que fala sobre a mesma coisa que você está vendo.
Para mais informações sobre o assunto, talvez também confira esta pergunta do StackOverflow: Visual Studio insere caracteres inválidos em arquivos em lote .