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

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

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

277547 次浏览

你可以用

call script.bat

或者只是

script.bat

You should use CALL

CALL batch.bat

使用 CALL

CALL nameOfOtherFile.bat

这将阻止(暂停)当前批处理文件的执行,并等待 CALLed 文件完成。

如果您不希望它被阻塞,可以使用 START代替。

通过使用来自 cmd 提示符的 CALL /?START /?获取细节信息。

下面是一个例子:

你有一只蝙蝠:

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

有条件地从 a.bat 调用 B.bat:

@echo off
echo "This is b.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!

But beware: When you invoke a batch script from another batch script, the original batch script will stop running. If you want to run the secondary batch script and then return to the previous batch script, you'll have to use the call command. For example:

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!

我不知道为什么,但是 Call 没起作用
call script.bat didn't return to the original console.
cmd /k script.bat did return to the original console.

如果希望在另一个窗口中打开批处理文件,请使用 start。这样,您基本上可以同时运行两个脚本。换句话说,您不必等待刚刚调用的脚本完成。 All examples below work:

start batch.bat
start call batch.bat
start cmd /c batch.bat

如果希望等待脚本完成,请尝试 start /w call batch.bat,但 batch.bat 必须以 exit结束。

运行这两个批处理文件最好使用

       start Call "batch_file_name.bat"

if you just say

       start"batch_file_name.bat"

有时它只打开一个“ cmd 窗口”,只有提示符,您将看到代码是 不会被处决。