具有延迟扩展的动态变量语法
Dynamic variable syntax with delayed expansion
为了重用代码,我尝试使用动态变量来测试条件,但无法获得我需要的结果。我正在使用延迟扩展。
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 的值)
我已经弄乱了转义字符,但无法正常工作。求助!
if !SUB_TRANSTYPE!==H (
CALL echo sub_transtype_header is %%!SUB_TRANSTYPE!_HEADER%%
)
请注意,==
运算符中缺少 =
。
这会在子 shell 中执行 echo
。
要解释 if
语句中的值,请使用
call set "someothervariable=%%!SUB_TRANSTYPE!_HEADER%%"
if "!someothervariable!"=="value" (
第 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!
此类管理在 this answer 中有完整描述。
为了重用代码,我尝试使用动态变量来测试条件,但无法获得我需要的结果。我正在使用延迟扩展。
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 的值)
我已经弄乱了转义字符,但无法正常工作。求助!
if !SUB_TRANSTYPE!==H (
CALL echo sub_transtype_header is %%!SUB_TRANSTYPE!_HEADER%%
)
请注意,==
运算符中缺少 =
。
这会在子 shell 中执行 echo
。
要解释 if
语句中的值,请使用
call set "someothervariable=%%!SUB_TRANSTYPE!_HEADER%%"
if "!someothervariable!"=="value" (
第 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!
此类管理在 this answer 中有完整描述。