2011-01-25 267 views

回答

153

使用CALL

CALL nameOfOtherFile.bat 

这将阻止(暂停)当前批处理文件的执行,并且它将一直等待,直到CALL ed完成为止。

如果您不希望它阻止,请改用START

从cmd提示符处使用​​3210或START /?获取基本细节。

+1

+一个用于详细说明CALL/START – 2017-05-10 15:25:08

1

您可以使用

call script.bat 

或只是

script.bat 
+1

如果您在脚本中直接调用另一个脚本,万一被调用脚本中的任何命令返回非零值(错误),被调用脚本也将停止执行,在使用`call`的情况下,它将继续执行即使在被调用的脚本中有错误。 – 2017-10-24 08:27:11

4

您应该使用CALL

CALL batch.bat 
0

这里是例子:

你有a.bat:

@echo off 
echo "This is b.bat" 
18

你可以只调用批处理脚本:

@echo off 
if exist b.bat goto RUNB 
goto END 
:RUNB 
b.bat 
:END 

和b.bat从a.bat有条件调用按名称,就好像你在命令行上运行一样。

因此,假设你有一个文件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! 

但要注意:当你调用从另一个批处理脚本批处理脚本,原批离谱pt将停止运行。如果要运行辅助批处理脚本,然后返回到以前的批处理脚本,则必须使用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!