单行使用Windowsbatch file的多个命令

我尝试了解batch file中单个命令行中的多个命令是如何工作的。

dir & md folder1 & rename folder1 mainfolder 

和其他类似命令的情况下,用&&代替。

 dir && md folder1 && rename folder1 mainfolder 

1.这两种情况有什么区别?


其他的事情我想问:

batch.bat

 dir & md folder1 & rename folder1 mainfolder 

batch.bat

 dir md folder1 rename folder1 mainfolder 

2.这个单线程和multithreading在batch file程序方面是否相同?


还有一件事我想知道:

3.如果我从main.bat调用其他batch file,它们是独立运行的吗? 主batch file不等待在其他batch file中结束过程? 怎么做?

&两个命令之间的简单结果是执行两个命令,而不依赖于第一个命令的结果。 &的命令权在命令离开之后执行,完成独立于前一命令的成功或错误,即独立于前一命令的退出/返回值。

&&导致第二个命令的条件执行。 第二个命令只有在第一个命令成功时才执行,这意味着退出代码为0。

有关替代解释,请参阅条件执行 。

 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 ) ) 

if not errorlevel 1表示之前的命令没有以大于0的退出码结束。 由于命令dirmd不会以负值退出,只有0或更大(几乎所有的命令和控制台应用程序),而值0是成功的退出代码,所以这是testing成功执行dir的正确方法, md 请参阅Microsoft支持文章testingbatch file中的特定错误级别 。

关于errorlevel的其他有用的Stack Overflow主题:

  • 哪个cmd.exe内部命令在成功后将ERRORLEVEL清除为0?
  • 什么是由内部cmd.exe命令设置的ERRORLEVEL值?

对于你的第三个问题的答案看到我的答案如何调用当前batch file的父文件夹中的batch file? 在这里我已经解释了使用命令call运行batch file的差别,或者在batch file中使用start或者不使用这两个命令的情况。