call命令
在批处理中调用别的批处理或者可运行程序或者
バッチ プログラムを別のバッチ プログラムから呼び出します。
语法
1、CALL [驱动盘符:][路径]文件名 [参数]
调用并执行[驱动盘符:][路径]文件名对应的处理程序,并将参数传递给该处理(参数之间用空白字符隔开)
这样就支持了bat程序的扩展
例如,我们可以调用bat,vbs,exe等处理来扩展bat程序的处理能力。
@echo off call F:\tmp\called.bat "hello world"
在路径【F:\tmp\】下面建个【called.bat】文件
文件内添加以下代码
@echo off echo %
* %1是输出传递该处理的第一个参数
运行结果为:
"hello world"
在例如,我们使用记事本来打开我们called.bat文件
notepad a.bat
执行上面这条语句,就会使用记事本来打开当前路径下的a.bat文件。
2、CALL :标号 引数
将引数传递给标号指定的处理,并将执行标号指定的处理,然后返回调用处,继续执行下面的处理。
@echo off call :called "test call" :called echo begin called echo % echo end called
运行结果(a.bat a.bat):
begin called
"test call"
end called
begin called
a.bat
end called
发现标签内的部分被执行了两边。投一次是call调用的时候执行的("test call"),call执行后,bat顺序执行以后,接下来是继续执行下标号的内容(a.bat)
解决这个问题,我们需要在我们需要终止的时候,添加一个【exit /b】出来
程序修改以后:
@echo off call :called1 "test call1" call :called2 "test call2" exit /b :called1 SETLOCAL echo % exit /b ENDLOCAL :called2 SETLOCAL echo % exit /b ENDLOCAL
执行结果:
"test call1"
"test call2"
看到这个地方执行状况,你不是觉得这个东西很像一个函数呢?
应该说这就是一个函数。以后我们想提取函数的时候就这么写了。