Batch file 如果表格中有(do)项,则批处理?
我基本上想做的是做2个IF,然后在4个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
) 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.