Я выкопал, что переменная пуста, если вы используете условия и задали условия!
if errorlevel 0 (
Set localVar="fooBar"
echo "%localVar%"
)
приведет к пустому выводу!
относится к сравнению строк в командном файле
использовать
SetLocal EnableDelayedExpansion
для включения !VARNAME!
, что позволит использовать !VARNAME!
в условии ниже, но все равно не разрешит вывод для %VARNAME%
в условном блоке!
Используйте Set BEFORE для условия, чтобы сделать его доступным в условном блоке.
ИЛИ использование должно быть ПОСЛЕ условного блока, в котором был использован Set.
(!) В настоящее время я не знаю, как проверить использование Set AND в одном блоке!
См. Пример кода в https://gist.github.com/childnode/0f6c874ad79788a86332
(!) Но, как вы можете видеть из результатов (также в гисте), использование DelayedExpansion имеет другой побочный эффект:
Переменная устанавливается во втором запуске в той же оболочке (что, очевидно, правильно), но по некоторым причинам не устанавливается с EnableDelayedExpansion
во втором запуске (кажется, она также очищает «локальные» переменные из скрипта и не экспортирует это для следующих команд!
Это может вызвать другую ошибку, если в «трубе» запускаются разные командные файлы