Não tenho ideia sobre suas perguntas diretas. Mas o seu arquivo de lote não pode funcionar como está escrito.
Você não pode usar %setup%
no mesmo bloco de código (loop FOR) que define o valor porque o bloco inteiro é analisado em uma passagem e o valor é expandido antes que a análise ocorra. O valor é definido corretamente, mas o valor expandido será o valor que existia antes de você entrar no loop.
Na primeira vez que você executa o script em lote, a variável setup
ainda não está definida, por isso, ela falha completamente. O valor é definido, mas seu loop não pode vê-lo. Seu script não tem setlocal
, portanto, o último valor que foi definido é preservado quando o script é encerrado. Na próxima vez que você executar seu script, ele usará o valor preservado da última execução em cada linha do arquivo XML.
Acredito que você consiga corrigir esse problema específico substituindo call %%setup%%
por %setup%
.
EDITAR
Ou melhor ainda, simplesmente elimine totalmente a variável setup
e use %%i
diretamente:
for /F "tokens=2 delims=<>" %%i in ('type test.xml ^|find "<install>"') do (
echo installing %installer% >>log.txt
%%i
)
Observação - não entendo de onde o valor installer
está vindo. Estou assumindo que você sabe o que está fazendo, mas parece estranho para mim.