Пакет DOS: переменная НАБОРА и ЭХО это в (…) блоке

Динамические прокси (добавленный в 1,3) позволяют Вам определять новый тип во времени выполнения, которое соответствует интерфейсу. Это пригодилось удивительное количество раз.

10
задан jeb 24 June 2017 в 13:33
поделиться

3 ответа

Расширение, отложенное пользователем и! вместо%

@echo off
setlocal enableextensions enabledelayedexpansion
set a=aaa
echo a = "%a%"
(
set b=bbb
echo b = "!b!"
)
10
ответ дан 3 December 2019 в 17:20
поделиться

Что происходит, так это то, что пакетный интерпретатор обрабатывает все, что находится между скобками, как одну строку. Это означает, что он выполняет замену переменных во всем, что находится между скобками, перед запуском любой из команд.

Итак:

(
set b=bbb
echo b = "%b%"
)

Становится:

(
set b=bbb
echo b = ""
)

Переменная b устанавливается, но, очевидно, не устанавливается перед запуском SET команда.

7
ответ дан 3 December 2019 в 17:20
поделиться

Требуется отложенное расширение до включен, иначе пакетный интерпретатор будет интерполировать все переменные во время анализа, а не во время выполнения.

setlocal enableextensions enabledelayedexpansion

См. этот вопрос для примера и некоторого отличного объяснения его.

6
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: