【发布时间】:2011-06-15 11:51:31
【问题描述】:
如何从批处理脚本中调用另一个批处理脚本?
我希望它在 if 语句中执行。
【问题讨论】:
标签: command-line batch-file cmd
如何从批处理脚本中调用另一个批处理脚本?
我希望它在 if 语句中执行。
【问题讨论】:
标签: command-line batch-file cmd
使用CALL
CALL nameOfOtherFile.bat
这将阻止(暂停)当前批处理文件的执行,并等待CALLed 完成。
如果您不想阻止它,请改用START。
在 cmd 提示符下使用 CALL /? 或 START /? 获取详细信息。
【讨论】:
您可以按名称调用批处理脚本,就像在命令行上运行一样。
所以,假设你有一个文件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!
【讨论】:
你应该使用 CALL
CALL batch.bat
【讨论】:
如果您想在另一个窗口中打开批处理文件,请使用start。这样,您基本上可以同时运行两个脚本。换句话说,您不必等待刚刚调用的脚本完成。
以下所有示例均有效:
start batch.bat
start call batch.bat
start cmd /c batch.bat
如果您想等待脚本完成,请尝试start /w call batch.bat,但batch.bat 必须以exit 结尾。
【讨论】:
你可以使用
call script.bat
或者只是
script.bat
【讨论】:
示例如下:
你有一个.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"
【讨论】:
更好地运行两个批处理文件
start Call "batch_file_name.bat"
如果你只是说
start"batch_file_name.bat"
有时它只打开一个“cmd 窗口”,只是提示,你会看到代码是 没有被执行。
【讨论】:
嗯,我不知道为什么,但是调用没有成功call script.bat 没有返回原来的控制台。cmd /k script.bat 确实返回了原来的控制台。
【讨论】: