我尝试了解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的退出码结束。 由于命令dir
和md
不会以负值退出,只有0或更大(几乎所有的命令和控制台应用程序),而值0是成功的退出代码,所以这是testing成功执行dir
的正确方法, md
。 请参阅Microsoft支持文章testingbatch file中的特定错误级别 。
关于errorlevel的其他有用的Stack Overflow主题:
对于你的第三个问题的答案看到我的答案如何调用当前batch file的父文件夹中的batch file? 在这里我已经解释了使用命令call
运行batch file的差别,或者在batch file中使用start
或者不使用这两个命令的情况。