Скорее всего, у вас где-нибудь есть забавный персонаж Я уверен, что если вы это сделаете, xxd -p blah.bat
то увидите в своем командном файле несколько забавных персонажей.
Затем вы можете подумать о том, как они туда попали и как их удалить .. И это можно сделать с помощью xxd и sed. Или, возможно, другим способом, если вы знаете, что это за персонажи.
Вы можете получить xxd, скачав VIM 7.X или из cygwin.
Или вы можете найти шестнадцатеричный редактор и поместить командный файл в шестнадцатеричный редактор.
Вы говорите, что создаете командный файл из stdin .. Ну, вы могли бы уточнить, что именно вы подразумеваете под этим, например, подразумеваете ли вы под copy con blah.bat
CTRL-Z? Но каким бы образом вы ни имели в виду, он помещает в файл несколько забавных символов.
добавленной
Я вижу, вы заявляете, что вы сделали это с эхо и перенаправления ..
Вы можете легко упростить это для устранения неполадок
Пытаться type blah.bat
если это показывает забавного персонажа, попробуйте echo H>blah.bat
затем создать его до того, что вы набрали ... и посмотрите, в какой момент вы получите забавного персонажа.
Другая вещь для экспериментов - это кодирование ввода и вывода
попробуйте chcp. chcp 850 и chcp 65001 и посмотрите, видите ли вы какие-либо различия. chcp изменит входную и выходную кодировку, но chcp покажет только входную кодировку.
Если вы посмотрите на мой ответ здесь https://stackoverflow.com/questions/30904504/font-is-right-why-cant-i-get-this-unicode-character-to-display-in-this-c-sharp / 32418703 # 32418703 вы видите программу с именем chcpa, которую я написал некоторое время назад, и вы можете использовать ее для более гибкого изменения кодировки ввода и вывода, чем chcp. Или вы можете просто использовать chcp, но если вы обнаружите, что chcp ограничивает вас в устранении неполадок, вы можете попробовать chcpa.
Но одним из лучших инструментов для устранения неполадок будет шестнадцатеричный редактор или xxd, как уже упоминалось. И пытаюсь упростить вашу линию еще дальше, как это предлагается.
Подобные шаги помогут вам определить, где находится ошибка. И комментарий, когда вы попробуете что-нибудь здесь или дальше.