具有延迟扩展的动态变量语法

时间:2017-09-25 13:08:28

标签: windows loops batch-file delayedvariableexpansion

尝试重用代码我试图使用动态变量来测试条件,但无法得到我需要的结果。我正在使用延迟扩展。

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 个答案:

答案 0 :(得分:0)

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" (

答案 1 :(得分:0)

第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完整描述。