如何从批处理脚本中运行批处理脚本?

时间:2011-01-25 21:12:29

标签: command-line batch-file cmd

如何从批处理脚本中调用另一个批处理脚本?

我希望它在if语句中执行。

8 个答案:

答案 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确实返回了原始控制台。