如何从批处理脚本中调用另一个批处理脚本?
我希望它在if
语句中执行。
答案 0 :(得分:195)
在
中使用CALL
CALL nameOfOtherFile.bat
这将阻止(暂停)当前批处理文件的执行,并等待CALL
ed文件完成。
如果您不希望阻止,请改用START
。
使用cmd提示符中的CALL /?
或START /?
获取详细信息。
答案 1 :(得分:20)
您可以按名称调用批处理脚本,就好像您在命令行上运行一样。
因此,假设您有一个文件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!
答案 2 :(得分:6)
你应该使用CALL
CALL batch.bat
答案 3 :(得分:2)
您可以使用
call script.bat
或只是
script.bat
答案 4 :(得分:1)
以下是示例:
你有a.bat:
@echo off
if exist b.bat goto RUNB
goto END
:RUNB
b.bat
:END
和b.bat从a.bat有条件地调用:
@echo off
echo "This is b.bat"
答案 5 :(得分:0)
如果要在另一个窗口中打开批处理文件,请使用start
。这样,您基本上可以同时运行两个脚本。换句话说,您不必等待刚刚调用的脚本即可完成。
以下所有示例均有效:
start batch.bat
start call batch.bat
start cmd /c batch.bat
如果要等待脚本完成,请尝试start /w call batch.bat
,但是batch.bat必须以exit
结尾。
答案 6 :(得分:0)
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
答案 7 :(得分:-1)
嗯,我不知道为什么,但是打电话没成功
call script.bat
没有返回原始控制台。
cmd /k script.bat
确实返回了原始控制台。