Batch file 如果表格中有(do)项,则批处理?

Batch file 如果表格中有(do)项,则批处理?,batch-file,Batch File,我基本上想做的是做2个IF,然后在4个do中解决,动作在中。我猜我在做一些我可能不会做的事情,因为我得到了一个错误: ) was not expected 有人能告诉我在IF测试结果中实现DO所需的表单吗?非常感谢 下面是我试图运行的代码。(它是抽象i.o代码语言) 四种可能性,用布尔形式表示2个if,我要明确地说:#t#t,#t#f,#f#t,#f#f (dos中的批处理)在“dos批处理”中,“DO”不用于“IF”语句,而是附加了“FOR” 在Windows 2000/XP/Vista/7

我基本上想做的是做2个IF,然后在4个do中解决,动作在中。我猜我在做一些我可能不会做的事情,因为我得到了一个错误:

) was not expected
有人能告诉我在IF测试结果中实现DO所需的表单吗?非常感谢

下面是我试图运行的代码。(它是抽象i.o代码语言)

四种可能性,用布尔形式表示2个if,我要明确地说:
#t#t,#t#f,#f#t,#f#f
(dos中的批处理)

在“dos批处理”中,“DO”不用于“IF”语句,而是附加了“FOR”

在Windows 2000/XP/Vista/7上,您可以键入
IF/?
以获取帮助。类似地,
for/?
将为您提供有关“for”语句的帮助

草图样本:

if CONDITION1 (
  if CONDITION2 (
    echo CONDITION1 true, and CONDITION2 true
  ) else (
    echo CONDITION1 true, and CONDITION2 false
  )
) else (
  if CONDITION3 (
    echo CONDITION1 false, and CONDITION3 true
  ) else (
    echo CONDITION1 false, and CONDITION3 false
  )
)

识别是发现问题的最佳方法:

if (logicaltest1) (
    do (
        if (logicaltest2) (
            do (
                action 1
                echo something 1
            )
        ) else (
            do (
                action 2
                echo something 2
            )
        *)* (missing)
    *)* (missing)
) else (
    if (logicaltest) (
        do (
            action 3
            echo something 3
        )
    *)* (unexpected)
    ) else (
        do (
            action 4
            echo something 4
        )
    )
*)* (missing)

这应该行得通。

出于某种原因,我不喜欢批处理文件中的嵌套IFs。如果可能,我会尝试转换它们,以便始终只有一级缩进

如果有人也有同样的不满,在这种特殊情况下可能会采取以下措施:

set selector=0
if CONDITION1 set /A selector+=1
if CONDITION2 set /A selector+=2

rem Now we have only 4 possible cases for selector, from 0 to 3

if %selector% = 0 (
  ...
) else if %selector% = 1 (
  ...
) etc.

当然,嵌套可以提供一个优势,当我们必须执行一些只依赖于
条件1
的命令时,我们不必重复它们,而我的方法似乎是这样。不过,我也尝试对这些情况进行排序,比如使用额外的IFs,如
if/I选择器lss 2…
或类似的东西效果。

这是DOS批处理还是其他什么?正如你在我问题的底部看到的那样,我信誓旦旦地说:(DOS中的批处理)
set selector=0
if CONDITION1 set /A selector+=1
if CONDITION2 set /A selector+=2

rem Now we have only 4 possible cases for selector, from 0 to 3

if %selector% = 0 (
  ...
) else if %selector% = 1 (
  ...
) etc.