Интерпретатор cmd
оценивает составные операторы так же, как он вычисляет блоки кода в скобках. Когда у вас есть:
command1 args & command2 args
... любые переменные во всей этой строке раскрываются перед выполнением команд. И поэтому, если вы делаете ...
set "var1=value" & echo The value of var1 is %var1%
... вы увидите, когда %var1%
развернуто, у него еще нет значения. Вам следует либо переместить команду curl
на новую строку, либо использовать отложенное расширение. См. setlocal /?
и set /?
в консоли cmd для получения дополнительной информации - в частности, в разделе set /?
, который начинается, "Наконец, добавлена поддержка отложенного расширения переменных среды."