Синтаксис динамических переменных с отложенным расширением

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

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" (
Другие вопросы по тегам