Por que o comando set não afeta os comandos imediatamente seguidos de & / &&?

Por que o comando set não afeta os comandos imediatamente seguidos de & / &&?

Eu tenho vários comandos usando uma variável de sistema e eles são comandos alinhados como este:

set test="blah" && echo %test%

Porém, percebi que a variável do comando set não está "definida" para os comandos da mesma linha. Se eu executar novamente o segundo comando, ele poderá ler a variável atualizada. Posso usar & ou && e os efeitos são os mesmos. Esse comportamento ocorre tanto com arquivos em lote quanto simplesmente colocando-os no prompt de comando.

Como faço para que o setcomando afete as instruções a seguir &ou &&?

Responder1

Isso ocorre porque toda a linha de comando é avaliada de uma só vez, portanto a variável testé resolvida antes de você executar o setcomando.

Uma solução fácil poderia ser colocar os comandos em linhas separadas em arquivos em lote e executá-los.

informação relacionada