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

Kev*_*Kev 86 command-line cmd batch-file

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

我希望它在一个if声明中执行.

yhw*_*w42 207

使用CALL

CALL nameOfOtherFile.bat
Run Code Online (Sandbox Code Playgroud)

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

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

通过使用cmd提示符CALL /?START /?从cmd提示符获取详细信息.

  • +一个用于详细说明CALL/START (9认同)

Dan*_*ich 20

您可以按名称调用批处理脚本,就像在命令行上运行一样.

因此,假设您有一个文件bar.bat说明echo This is bar.bat!并且您想从文件中调用它foo.bat,您可以将其写入foo.bat:

if "%1"=="blah" bar
Run Code Online (Sandbox Code Playgroud)

运行foo blah在命令行中,你会看到:

C:\>foo blah

C:\>if "blah" == "blah" bar

C:\>echo This is bar.bat!
This is bar.bat!
Run Code Online (Sandbox Code Playgroud)

但要注意:当您从另一个批处理脚本调用批处理脚本时,原始批处理脚本将停止运行.如果要运行辅助批处理脚本然后返回上一个批处理脚本,则必须使用该call命令.例如:

if "%1"=="blah" call bar
echo That's all for foo.bat!
Run Code Online (Sandbox Code Playgroud)

如果你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!
Run Code Online (Sandbox Code Playgroud)


小智 6

你应该使用CALL

CALL batch.bat
Run Code Online (Sandbox Code Playgroud)


Eli*_*ine 5

您可以使用

call script.bat
Run Code Online (Sandbox Code Playgroud)

要不就

script.bat
Run Code Online (Sandbox Code Playgroud)

  • 如果您直接在脚本中调用另一个脚本,如果被调用脚本中的任何命令返回非零值(错误),被调用脚本也会停止执行,其中使用“call”,即使被调用脚本中的任何命令返回非零值(错误),它也会继续执行调用的脚本中有错误。 (9认同)

Gaš*_*rin 5

如果您想在另一个窗口中打开批处理文件,请使用start. 这样,基本上就可以同时运行两个脚本了。换句话说,您不必等待刚刚调用的脚本完成。以下所有示例均有效:

start batch.bat
start call batch.bat
start cmd /c batch.bat
Run Code Online (Sandbox Code Playgroud)

如果您想等待脚本完成,请尝试start /w call batch.bat,但batch.bat 必须以 结尾exit