Почему команда set не влияет на команды, следующие сразу за & / &&?

Почему команда set не влияет на команды, следующие сразу за & / &&?

У меня есть несколько команд, использующих системную переменную, и они представляют собой однострочные команды, например:

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

Однако я заметил, что переменная команды set не "установлена" для команд в той же строке. Если я снова запущу вторую команду, она сможет прочитать обновленную переменную. Я могу использовать как &, так и &&, и эффект будет одинаковым. Такое поведение происходит как с пакетными файлами, так и при простом вводе в командную строку.

Как мне получить setкоманду, которая повлияет на операторы, следующие за &или &&?

решение1

Это связано с тем, что вся командная строка оценивается сразу, поэтому переменная testразрешается до запуска setкоманды.

Простым решением может стать размещение команд в отдельных строках пакетного файла и его запуск.

Связанный контент