Я хотел бы знать, возможно ли обрабатывать переменную, содержащую переменную, не сразу, а только по запросу. Например, эта партия:

 @echo off
 setlocal EnableDelayedExpansion
 set VA=Two
 set VAR=!VA! people
 set VA=Three
 ECHO !VAR!

Принты "Два человека". Можно ли выполнить синтаксический анализ только в конце с эхом, чтобы на выходе было "Три человека"?

2 ответа2

1

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

Самый простой способ добиться желаемого результата - просто отобразить переменную VA и текст в конце. В основном, сделайте все ваши вычисления, а затем в конце соберите свои результаты.

@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
0

Просто установите VAR в конце снова. Нет ограничений на частоту установки переменной.

Помните, что командный файл - это только список команд, которые вы можете ввести в командной строке. Каждая строка в основном представляет собой одну команду за раз, выполняемую в хронологическом порядке

Поэтому, если вам нужно повысить VAR с правильными условиями, установите его как раз перед этим моментом. Пример:

@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=%VA% people
echo %VAR%

set VA=Three
::We want to update VAR, so lets set it again:
set VAR=%VA% people
echo %VAR%

pause

:: в пакетном файле совпадает с REM

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .