Você provavelmente tem algum personagem engraçado em algum lugar. Tenho certeza de que, se você fizer xxd -p blah.bat
, verá alguns caracteres engraçados no seu arquivo de lote.
Você pode então pensar em como eles chegaram e removê-los. E isso pode ser feito com xxd e sed. Ou talvez de outra maneira, se você souber quais personagens eles são.
Você pode obter o xxd do download do VIM 7.X ou do cygwin
Ou você pode encontrar um editor hexadecimal e colocar o arquivo em lote no editor hexadecimal.
Você diz que está criando o arquivo de lote do stdin. Bem, você pode explicar precisamente o que você quer dizer com isso, por exemplo, você quer dizer por copy con blah.bat
e depois CTRL-Z? Mas do jeito que você quer dizer, é colocar alguns chars engraçados no arquivo.
adicionado
Eu vejo que você disse que fez isso com eco e redirecionamento ..
Você pode simplificar isso facilmente para solucionar problemas
Experimente type blah.bat
se isso mostrar um personagem engraçado, tente
echo H>blah.bat
, em seguida, edite-o para o que você digitou ... e veja em que ponto você obtém o personagem engraçado.
Outra coisa para experimentar é a codificação de entrada e saída
tente chcp. chcp 850 e chcp 65001 e veja se você vê alguma diferença. O chcp irá alterar a codificação de entrada e saída, mas o chcp mostrará apenas a codificação de entrada.
Se você olhar minha resposta aqui link você vê um programa chamado chcpa que eu escrevi um tempo atrás, e você pode usar isso para alterar as codificações de entrada e saída mais flexivelmente do que o chcp. Ou você poderia apenas usar o chcp, mas se você achar que o chcp está limitando sua solução de problemas, então você pode tentar o chcpa.
Mas uma de suas melhores ferramentas aqui na sua solução de problemas seria um editor hexadecimal ou xxd, como mencionado. E tentando simplificar ainda mais sua linha, como sugerido.
Etapas como essa ajudarão você a identificar onde está o erro. E comente quando você tentar algo aqui ou mais.