首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Batch if form with ( do ( in it?

Batch if form with ( do ( in it?
EN

Stack Overflow用户
提问于 2011-01-23 23:56:25
回答 3查看 8.6K关注 0票数 2

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

代码语言:javascript
运行
复制
) was not expected

谁能告诉我在IF测试的结果中,我需要用什么形式来实现DO?非常感谢。

在下面你可以找到我试图运行的代码。(它是抽象i.o代码语言)

代码语言:javascript
运行
复制
if (logicaltest1) ( do (
if (logicaltest2) ( do (
action 1
echo something 1
)
) else ( do (
action 2
echo something 2
)
) else (
if (logicaltest) ( do (
action 3
echo something 3
)
)
) else ( do (
action 4
echo something 4
)
)

有四种可能性,用布尔值表示2if‘s,我先说清楚:#t#t,#t#f,#f#t,#f#f (批量表示为dos)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-24 00:12:54

识别是找出问题的最好方法:

代码语言:javascript
运行
复制
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)

这应该是可行的。

票数 2
EN

Stack Overflow用户

发布于 2011-01-24 00:11:29

在"DOS批处理“中,"DO”不在"IF“语句中使用,而是与"FOR”一起使用。

在Windows2000/XP/Vista/7上,您可以键入IF /?以获取帮助。类似地,FOR /?会给你关于"FOR“语句的帮助。

示例草图:

代码语言:javascript
运行
复制
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
  )
)
票数 5
EN

Stack Overflow用户

发布于 2011-02-01 16:25:00

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

如果有人也有这样的不满,下面是在这种情况下可能会做的事情:

代码语言:javascript
运行
复制
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.

当然,嵌套可以提供一个优势,当我们必须执行一些仅依赖于CONDITION1的命令时,我们不必重复它们,而使用我的方法,似乎我们需要重复它们。尽管如此,我也尝试整理这类情况,比如使用额外的IFs,比如if /I selector lss 2 ...或类似的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4774717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档