0

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

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 的值)

我已经搞砸了转义字符,但无法让它工作。帮助!

4

2 回答 2

0
if !SUB_TRANSTYPE!==H (
   CALL echo sub_transtype_header is %%!SUB_TRANSTYPE!_HEADER%%
)

请注意,您=缺少==运营商。

echo在子shell中执行。


要解释if语句中的值,请使用

call set "someothervariable=%%!SUB_TRANSTYPE!_HEADER%%"
if "!someothervariable!"=="value" (
于 2017-09-25T13:17:22.523 回答
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!

这种类型的管理在这个答案中有完整的描述。

于 2017-09-25T13:23:16.170 回答