嵌套在批处理脚本中

时间:2018-04-16 17:53:48

标签: windows batch-file scripting devops

我在批处理脚本中编写一个非常简单的代码,我发现当我编写嵌套if时它会崩溃。 这是我的代码:

 if !client!==CTRF ( 
   if !db2_domain! EQU 1 (
    call:upgrade_db_for_CTRF !rel_version!>> !log1! 2>&1
   )
 )

我的缩进是否有问题,或者我可能将括号放在错误的位置?

这就是我想要做的事情:

  1. 如果客户是CTRF db2_domain = 1

  2. 调用此函数:upgrade_db_for_CTRF

  3. 或许您对另一种方式如何实现AND运算符有另一种想法?

2 个答案:

答案 0 :(得分:0)

让我们使用双引号来确保我们不会捕获不需要的空格。我在此还假设您激活setlocal enabledelayedexpansion

 if "!client!"=="CTRF" ( 
     if "!db2_domain!"=="1" (
      echo "!db2_domain!"
      echo "!client!"
   )
 )

确认无效后,再次添加呼叫命令。另外,请考虑添加您遇到的失败。

答案 1 :(得分:0)

  • 括号不是必需的
  • 来自代码片段,如果调用setlocal EnableDelayedExpansion则不清楚
  • 只有在另一个封闭的代码块中才需要使用所有!代替%
  • 对未定义的变量clientdb2_domain进行故障保护,可以双引号等式或使用if defined进行测试
相关问题