【发布时间】:2018-03-06 11:23:05
【问题描述】:
为了重用代码,我尝试使用动态变量来测试条件,但无法获得所需的结果。我正在使用延迟扩展。
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 Echo sub_transtype_header is !H_HEADER! -
是的,但我试图重用我的代码,而不是使用 100 行带有静态变量的单独行。
-
您和您接受的答案都使用了静态字符,
H在If比较的开头,因此无需使用变量来表示完全相同的已知静态字符同一行的结尾。 -
这段代码只是一个更大函数的一部分,但是这部分是许多函数通用的部分。静态 H 是必要的,因为针对不同的事务类型执行某些其他操作。
-
If变量SUB_TRANSTYPE的字符串内容等于区分大小写的字符串字符H,那么就知道sub_transtype_header就是变量H_HEADER的字符串内容。请向我提供您现在拥有的不使用静态字符串字符H的行,并告诉我该“不同”比较字符串是如何得出的。
标签: windows loops batch-file delayedvariableexpansion