我们可以在批处理脚本中的 for 循环中使用 IF 条件吗?
Can we use IF condition inside the for loop in batch scripting?
set STR1= FINISHED
for /f "tokens=4,* delims=:" %a in (filename.txt) do (if %b == %STR1% (echo "SUCCESS") else (echo %b))
我正在使用上面的代码,但无法循环,它只是在执行 echo %b。
filename.txt :
12:38:32,249 信息 [SoapUIRunner] 已完成 运行 SoapUI 测试用例 [Couple Order],耗时:14124 毫秒,状态:失败
12:38:34,441 信息 [SoapUIRunner] 已完成 运行 SoapUI 测试用例 [Ping],耗时:2136 毫秒,状态:已完成
[回避交火]
现在 - 别那么快,朋友们....
如所写,代码应该执行
(if FINISHED == FINISHED (echo "SUCCESS" ) else (echo FINISHED ) )
但报告
FINISHED
现在粗心的人会认为它的行为不符合逻辑 - 但令人难以置信的是,它是。
重点是使用token流if
%b
==
FINISHED
进行比较。 %str1%
中的前导 space 被解析器吃掉,因为它是一个可选的分隔符。然后处理正确地认为%b
的内容与FINISHED
和%b
的内容不同包含前导 space.
按发布的代码修改:
for /f "tokens=4,* delims=:" %a in (filename.txt) do (if "%b" == "%STR1%" (echo "SUCCESS") else (echo %b))
引号教导 cmd
不要将 str1
中的前导 space 视为分隔符。
当然,如果这是批处理文件中的一行,因为它应该是为了克服永久重新键入问题,那么元变量确实应该 %
加倍。
提示:使用 set "var1=data"
设置值 - 这避免了尾随 space 引起的问题。在比较中,使用if "thing1" == "thing2" ...
可以避免thing1/2
.
中的space引起的问题
set STR1= FINISHED
for /f "tokens=4,* delims=:" %a in (filename.txt) do (if %b == %STR1% (echo "SUCCESS") else (echo %b))
我正在使用上面的代码,但无法循环,它只是在执行 echo %b。
filename.txt :
12:38:32,249 信息 [SoapUIRunner] 已完成 运行 SoapUI 测试用例 [Couple Order],耗时:14124 毫秒,状态:失败
12:38:34,441 信息 [SoapUIRunner] 已完成 运行 SoapUI 测试用例 [Ping],耗时:2136 毫秒,状态:已完成
[回避交火]
现在 - 别那么快,朋友们....
如所写,代码应该执行
(if FINISHED == FINISHED (echo "SUCCESS" ) else (echo FINISHED ) )
但报告
FINISHED
现在粗心的人会认为它的行为不符合逻辑 - 但令人难以置信的是,它是。
重点是使用token流if
%b
==
FINISHED
进行比较。 %str1%
中的前导 space 被解析器吃掉,因为它是一个可选的分隔符。然后处理正确地认为%b
的内容与FINISHED
和%b
的内容不同包含前导 space.
按发布的代码修改:
for /f "tokens=4,* delims=:" %a in (filename.txt) do (if "%b" == "%STR1%" (echo "SUCCESS") else (echo %b))
引号教导 cmd
不要将 str1
中的前导 space 视为分隔符。
当然,如果这是批处理文件中的一行,因为它应该是为了克服永久重新键入问题,那么元变量确实应该 %
加倍。
提示:使用 set "var1=data"
设置值 - 这避免了尾随 space 引起的问题。在比较中,使用if "thing1" == "thing2" ...
可以避免thing1/2
.