Короче говоря: мы получаем команду из скрипта и хотим выполнить ее с помощью оболочки Windows.
В настоящее время мы используем метод, аналогичный:
echo start & command & echo finish
Это работает нормально, если только команда сама по себе не содержит амперсанд, например
echo begin & if exist c:\temp.txt echo 1 & echo end
не сможет записать «end», если файл не существует.
Эту проблему можно решить, изменив команду на echo begin & (if exist c:\temp.txt echo 1) & echo end
, но тогда мы столкнемся с проблемами для команд, содержащих символы скобок, например
echo begin & (echo %PATH%) & echo end
выводит «\Hewlett-Packard\HP в этот раз был непредвиденным», поскольку в пути есть Program Files (x86).
Есть ли способ экранировать специальные символы из результата команды?
заранее спасибо
решение1
Проблема в пробелах в PATH, поэтому используйте кавычки.
echo begin & (echo "%PATH%") & echo end