Вы написали свой командный скрипт в UTF-8. Эти три символа являются кодировкой UTF-8 метки порядка байтов Unicode, U+FEFF
, отображаемой на кодовой странице 437. Сценарии для командного процессора Microsoft всегда обрабатываются командным процессором, как если бы они кодировали текущую кодовую страницу "OEM" (в данном случае ясно 437), и должны быть записаны как таковые.
Причина того, что в Блокноте все выглядело нормально, заключается в том, что Блокнот распознает спецификации и соответствующим образом декодирует файл. Блокнот показывал вам не то, что командный процессор на самом деле видит в файле.
Обратите внимание, что Блокнот не имеет возможности чтения / записи файлов в кодовых страницах OEM. Если вы используете символы в командных сценариях, которые не входят в подмножество ASCII, общее для кодовых страниц "OEM" и "Windows" (к счастью, здесь это не так), то вы не сможете использовать Блокнот для редактирования этих сценариев (если вы не способны перевести от "OEM" до "Windows" кодовых страниц в вашей голове при вводе).
Даже в этом случае у вас возникнут проблемы, когда Блокнот автоматически добавит метки порядка байтов к вашим файлам, когда вы случайно сохраните его как UTF-8 вместо текущей кодовой страницы Windows (которую Блокнот неправильно называет "ANSI"). Это почти наверняка то, что произошло здесь, на самом деле.