【问题标题】:Can we use IF condition inside the for loop in batch scripting?我们可以在批处理脚本的 for 循环中使用 IF 条件吗?
【发布时间】:2021-04-21 20:00:42
【问题描述】:
set STR1= FINISHED

for /f "tokens=4,* delims=:" %a in (filename.txt) do (if %b == %STR1% (echo "SUCCESS") else (echo %b))

我正在使用上面的代码,但无法循环,它只是在做 echo %b。

文件名.txt:

12:38:32,249 INFO [SoapUIRunner] 完成运行 SoapUI 测试用例 [Couple Order],耗时:14124ms,状态:FAILED

12:38:34,441 INFO [SoapUIRunner] 已完成运行 SoapUI 测试用例 [Ping],耗时:2136 毫秒,状态:已完成

【问题讨论】:

    标签: batch-file scripting windows-scripting


    【解决方案1】:

    [闪避交火]

    现在 - 不要那么快,parders....

    如所写,代码应该执行

    (if  FINISHED == FINISHED (echo "SUCCESS" )  else (echo  FINISHED ) )
    

    但报告

     FINISHED
    

    现在粗心的人会认为它的行为不符合逻辑 - 但令人难以置信的是,它确实如此。

    关键是使用令牌流if%b==FINISHED进行比较。 %str1% 中的前导空格被解析器吃掉,因为它是一个可选的分隔符。然后处理正确地判断%b 的内容与FINISHED 不同,因为%b 包含一个前导空格。

    治愈发布的代码:

    for /f "tokens=4,* delims=:" %a in (filename.txt) do (if "%b" == "%STR1%" (echo "SUCCESS") else (echo %b))
    

    引号告诉cmd 不要将str1 中的前导空格视为分隔符。

    当然,如果这是一个批处理文件中的一行,因为它应该是为了克服永久重新键入问题,那么元变量应该确实将它们的 %s 加倍。

    提示:使用set "var1=data" 设置值 - 这可以避免尾随空格引起的问题。在比较中,使用if "thing1" == "thing2" ... 可以避免thing1/2 中的空格引起的问题。

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 2016-12-24
      • 2023-04-02
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2013-10-01
      • 2017-02-03
      相关资源
      最近更新 更多