windows - 如何||和 && 使用括号括起来的复合命令?

标签 windows batch-file cmd

假设我有一个复合命令(由运算符 &&& 和/或 || 连接的多个简单 CMD 命令)。我用括号将它括起来,然后放置另一个条件执行运算符(&&||),然后是例如命令 DIR

当解释器决定是否执行我的 DIR 命令时,我的复合命令中哪些简单命令的成功或失败会很重要?

我做了一些实验,似乎只有复合命令中最后一个简单命令的成功或失败对 DIR 的执行具有决定性作用。

但后来我遇到了这个page ,上面写着“使用括号来测试几个命令是否成功”。这意味着解释器以某种方式聚合复合命令中简单命令返回的错误级别,并决定是否(在我的示例中)DIR 被执行。

所以我很困惑......

最佳答案

你原来的理解是正确的,&&||操作符响应最近执行的命令(或操作)

以下对原文提出 claim page you referenced错误的

Use parenthesis to test the success of several commands:

(Dir C:\Test1 & Dir C:\Test2) || Echo One or more of the commands failed.

如果 2nd DIR 失败,上面只会回显错误消息。

可以使用 && 而不是 & 来更正测试,但这是一个简单的逻辑结果,而不是一些附加功能。此外,代码短路 - 如果第一个 DIR 命令失败,则第二个命令将不会执行。

(Dir C:\Test1 && Dir C:\Test2) || echo One of the DIR commands failed.

并且不需要括号。以下给出了完全相同的结果

Dir C:\Test1 && Dir C:\Test2 || echo One of the DIR commands failed.

在我的第一句话中,我说 &&|| 可以响应操作,因为它们响应重定向等操作。

如果重定向失败或 DIR 失败,以下将回显自定义错误消息。请注意,重定向发生在命令执行之前。如果重定向失败,则永远不会执行该命令:

dir c:\test >x:\output.log || echo Redirection or dir failed

注意事项

自发布此问答以来,引用页面的内容已得到更正:-)

关于windows - 如何||和 && 使用括号括起来的复合命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724068/

相关文章:

python - 如何在 Python 中一整天每十分钟执行一个程序

c++ - MS Visual Studio Professional 2013 - C++ 为 32 位和 64 位操作系统编译单个可执行文件?

c# - 检测 Windows 10 系统电源状态

string - dos下如何删除某个字符之前的字符串?

windows - 批量字符串连接

用于图像压缩的 Windows 命令返回无效参数错误

google-chrome - 如何将 Chrome 扩展另存为 .exe 文件?

windows - Docker 存储库服务器向 HTTPS 客户端提供 HTTP 响应

batch-file - CMD mkdir 语法错误

windows - 比较两个文件夹及其子文件夹批处理文件