我尝试了解批处理文件中单个命令行中的多个命令是如何工作的.
dir & md folder1 & rename folder1 mainfolder
和其他类似命令的情况,但&取代&&
dir && md folder1 && rename folder1 mainfolder
这两种情况有什么区别?
其他我想问的事情:
单行批发
dir & md folder1 & rename folder1 mainfolder
多行批发
dir md folder1 rename folder1 mainfolder
这个单行和多行班在批处理文件程序方面是否相等?
还有一件我想知道的事情:
3.如果从main.bat调用其他批处理文件,它们是否独立运行,同时运行?主批处理文件不等待其他批处理文件中的结束程序?怎么做?
&安培;在两个命令之间简单地导致独立于第一个命令的结果执行两个命令.指挥权&在命令左后被执行完成独立于上一个命令的成功或错误,即独立于先前命令的退出/返回值.
&安培;&安培;导致第二个命令的条件执行.第二个命令只有在第一个命令成功的情况下执行,这意味着退出代码为0.
另见说明见Conditional Execution.
dir & md folder1 & rename folder1 mainfolder
因此是相等的
dir md folder1 rename folder1 mainfolder
多行代替
dir && md folder1 && rename folder1 mainfolder
将会
dir if not errorlevel 1 ( md folder1 if not errorlevel 1 ( rename folder1 mainfolder ) )
如果不是错误级别1则意味着之前的命令没有终止,退出代码大于0.由于命令dir和md不会退出负值,只有0或更大(几乎所有的命令和控制台应用程序)和值0是退出代码成功,这是一个正确的方法来测试dir和md的成功执行.请参阅Microsoft支持文章Testing for a Specific Error Level in Batch Files.
其他有用的Stack Overflow主题关于errorlevel:
> Which cmd.exe internal commands clear the ERRORLEVEL to 0 upon success?
> What are the ERRORLEVEL values set by internal cmd.exe commands?
对于第三个问题的答案,请参阅我的答案How to call a batch file in the parent folder of current batch file?,我已经解释了使用命令调用运行批处理文件,或者与批处理文件中的这两个命令一起启动或不启动批处理文件的区别.