Нужно быть несколько осторожнее, так как пакетная команда Windows:
for /f "delims=" %%a in ('command') do @set theValue=%%a
не имеет той же семантики, что и оператор оболочки Unix:
theValue=`command`
Рассмотрим случай, когда команда не выполнена, что вызвало ошибку.
В версии оболочки Unix назначение «theValue» все еще происходит, любое предыдущее значение заменяется пустым значением.
В пакетной версии Windows это команда «for», которая обрабатывает ошибку, а предложение «do» никогда не достигается, поэтому любое предыдущее значение «theValue» будет сохранено.
Чтобы получить больше Unix-подобной семантики в пакетном скрипте Windows, необходимо убедиться, что назначение выполнено:
set theValue=
for /f "delims=" %%a in ('command') do @set theValue=%%a
Неспособность очистить значение переменной при преобразовании сценария Unix в пакет Windows может быть причиной незначительных ошибок.