Вы можете добиться отложенного расширения по-разному:
CALL ECHO %%r%p_x%%p_y%%%
Чуть менее ужасно, но, по крайней мере, избавляет вас от необходимости давать специальную команду (все же, сомнительное преимущество, если честно).
Как это работает.Двойной %
вычисляется как литерал %
, затем две переменные оцениваются по их значениям, и, наконец, у вас есть еще один двойной %
, который обрабатывается соответственно.
Это первый разбор, которыйпроисходит непосредственно перед выполнением строки.К моменту выполнения строка принимает вид (например) CALL ECHO %r21%
.
Как можно догадаться, когда вызывается команда CALL
, происходит второй разбор, и на этот раз %r21%
жестко оценивается до соответствующего значения.