Answers:
您可以按名称调用批处理脚本,就像在命令行上运行一样。
因此,假设您有一个文件bar.bat
说,echo This is bar.bat!
并且您想从文件中调用它foo.bat
,则可以这样写foo.bat
:
if "%1"=="blah" bar
运行foo blah
在命令行中,你会看到:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
但要注意:从另一个批处理脚本调用一个批处理脚本时,原始批处理脚本将停止运行。如果要运行辅助批处理脚本然后返回上一个批处理脚本,则必须使用call
命令。例如:
if "%1"=="blah" call bar
echo That's all for foo.bat!
如果以此为foo blah
依据,则会看到:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
如果要在另一个窗口中打开批处理文件,请使用start
。这样,您基本上可以同时运行两个脚本。换句话说,您不必等待刚刚调用的脚本即可完成。以下所有示例均有效:
start batch.bat
start call batch.bat
start cmd /c batch.bat
如果要等待脚本完成,请尝试start /w call batch.bat
,但是batch.bat必须以结尾exit
。
dayStart.bat
start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
release.bat
call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat
呵呵,我不知道为什么,但是打电话没做的把戏
call script.bat
没有回到原来的控制台。
cmd /k script.bat
确实返回了原始控制台。
call
,即使有错误,也会继续执行在被调用的脚本中。