Я чертовски потратил время на то, чтобы избежать этого правильно, я нахожусь на Windows 7 и создал командный файл, который использует текущий каталог. В текущем каталоге обычно есть пробелы, поэтому его необходимо экранировать в двойных кавычках.
У меня есть папка, внутри которой запускается мой пакетный файл, и папка содержит подкаталоги, поэтому я хочу сослаться на другие файлы в этих подпапках:
echo "%~dp0"
set rootDir=%~dp0%Support\Command.exe
set _serial_cmd="%rootDir%
echo %_serial_cmd%
FOR /f "tokens=4 delims=(COM)]" %%G IN ('%_serial_cmd% ^|findstr /R /C:"Standard COM Port"') DO SET AVRSERIALPORT=COM%%G
echo %_serial_cmd%
печатает нормально, но ссылка на переменную% _serial_cmd% в операторе FOR не любит кавычки или прекращает чтение после первого пробела в пути к каталогу.