Синтаксис динамических переменных с отложенным расширением
В попытке повторно использовать код я пытаюсь использовать динамические переменные для проверки условия, но не могу получить нужный мне результат. Я использую отложенное расширение.
1 Outside the for loop:
2 set "H_HEADER=FALSE"
3 set "SUB_TRANSTYPE=#"
4
5 Inside the for loop:
6 set "SUB_TRANSTYPE=!FULL_LINE:~0,1!"
7 if !SUB_TRANSTYPE!==H (
8 echo sub_transtype_header is !!SUB_TRANSTYPE!_HEADER!
9 )
Строка 6 устанавливает SUB_TRANSTYPE в H
Строка 8 выводит H_HEADER на консоль, но я хочу, чтобы он вывел FALSE (значение H_HEADER)
Я бездельничал с побегами, но не могу заставить это работать. Помогите!
2 ответа
Решение
Строка 6 должна быть:
set "SUB_TRANSTYPE=!FULL_LINE:~0,1!"
Строка 7 должна быть:
if !SUB_TRANSTYPE!==H (
Строка 8 должна быть:
for /F %%A in ("!SUB_TRANSTYPE!") do echo sub_transtype_header is !%%A_HEADER!
Этот тип управления полностью описан в этом ответе.
if !SUB_TRANSTYPE!==H (
CALL echo sub_transtype_header is %%!SUB_TRANSTYPE!_HEADER%%
)
обратите внимание, что у вас есть =
отсутствует из ==
оператор.
Это выполняет echo
в скорлупе.
Чтобы интерпретировать значение в if
заявление, использование
call set "someothervariable=%%!SUB_TRANSTYPE!_HEADER%%"
if "!someothervariable!"=="value" (