标题:
call 从批处理程序调用另一个批处理程序
[打印本页]
作者:
51黑fan
时间:
2016-1-30 01:01
标题:
call 从批处理程序调用另一个批处理程序
call
有几种用法
第一种用法,也就是最常用的一种,调用另一个批处理,在被调用的批处理执行完后在执行
call
下面的命令。如:
@echo off
call a.bat
dir c:\
pause
如果在被调用的批处理里面有参数,调用的时候需要在后面加上参数。
如:
a.bat
内容:
@echo off
echo %0 %1
b.bat
内容:
@echo off
call a.bat hello
dir c:\
pause
那么,在执行
b.bat
的时候,会将
hello
赋值给
%1
,而
%0
代表
a.bat
自己。
(在批处理中,可以使用
%*
代表所有参数
%1-%9
代表
9
个参数,
%0
代表批处理自己,其扩展用法见
call /?
,在讲
for
的时候也会讲到)
在这里讲下
goto :eof
的用法,如:
a.bat
内容:
@echo off
echo %0 %1
goto :eof
b.bat
内容:
@echo off
call a.bat hello
dir c:\
pause
这里,在显示完
hello
后,会执行
dir c:\
并暂停,如果将
goto :eof
改成
exit
,在显示完
hello
后就会自动退出。因为
goto :eof
后会转到
a.bat
结尾,即只退出
a.bat
然后会继续执行
dir
;由于
call a.bat
,在执行
a.bat
和
b.bat
是一个
CMD
窗口,
exit
的话就会直接退出这个窗口,这就是
goto :eof
和
exit
区别。
call
的第二种用法,调用一个命令,如:
call ping 127.1
,这和直接
ping 127.1
看似是一样的,但还是有区别的。主要用法就是
call set
,在后面讲延迟环境变量的时候慢慢体会。
call
的第三种用法,调用一个应用程序,
call notepad.exe
。
call
可以这么用,但一般在调用应用程序的时候会使用
start
,很少用
call
。
call
的第四种用法,调用本批处理中的一个标签。如:
@echo off
call :no1
start notepad.exe
exit
:no1
start calc
ping /n 2 127.1>nul
在这里会先打开计算器,然后打开记事本。在
call
标签的时候要加上“:”。
这与
goto
有什么区别呢?在看一个例子:
@echo off
goto :no1
start notepad.exe
exit
:no1
start calc
ping /n 2 127.1>nul
这里只会打开计算器,并不打开记事本。
因为,
goto :no1
是转到标签
:no1
处运行,运行完就退出,而
call
是调用
:no1
,运行完继续执行
call
下面的命令
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1