Как указано в других ответах, пробелы в конце команды set являются значительными, поэтому, если вы введете
set foo=hello & echo test
или даже
set foo=hello␣
(где ␣ представляет пробел), %foo% устанавливается в строку из шести символов h , e , l , l , o , ,
У меня была аналогичная проблема с пространством , когда echo ИНГ строку выходного файла.
Не удивительно (в свете вышесказанного),
echo hello >myfile
записывает шестизначную строку h , e , l , l , o , (плюс CR и LF) в файл, в то время как
echo hello> myfile
не включает пространство
Но пробелы в конце командной строки остаются проблемой.
Если по какой-то причине вы говорите
echo hello>myfile␣
тогда вы получите пробел в конце вывода.
Когда я удалил пробел после имени файла, пробел в конце вывода исчез.
Странно, но это сработало для меня.