批处理教程:基础语法之Call语句

在DOS和Windows(任意)系统中.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件。

学过汇编或 C 的朋友,肯定都知道 call 指令表示什么意思了,在这里它的意思其实也是一样的。在批处理脚本中,call 命令用来从一个批处理脚本中调用另一个批处理脚本。如下(默认的三个脚本文件名分别为 start.bat 、10.bat 和 ipc.bat):

start.bat:

......
CALL 10.BAT 0
......

10.bat:

......
ECHO %IPA%.%1 >HFIND.TMP
......
CALL ipc.bat IPCFind.txt

ipc.bat:

for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.
bat %%i %%j %%k

有没有看出什么不对的地方?没看出来啊?没看出来就对了,其实就没有不对的地方嘛,你怎么看的出来!从上面两个脚本,你可以得到如下信息:

1、脚本调用可以灵活运用,循环运用、重复运用。

2、脚本调用可以使用参数!

关于第一点就不多说了,聪明的你一看就应该会,这里说一下第二点。在 start.bat 中,10.bat 后面跟了参数 0,在执行时的效果,其实就是把 10.bat 里的参数%1 用 0 代替。在start.bat 中, ipc.bat 后面跟了参 数ipcfind.txt(一个文件,也可以做参数),执行时的效果,就是用 ipc.bat 中的每一行的三个变量(这里不懂没关系,学过 for 命令后就懂了),对应代换ipc.bat 中的%%i、%%j 和%%k。这里参数调用是非常灵活的,使用时需要好好体会。

在初学期间,可以先学习只调用脚本,至于连脚本的参数一起使用的情况,在后面的学习中自然就会有比较深刻的理解, 这是因为当你已经可以灵活运用批处理脚本后,如何使代码写的更精简更完美更高效就自然包括到了考虑的范围,这时候你就会发现在调用脚本时直接加入参数,可以使代码效率加倍。

上面的这几个脚本, 都是 Bat.Worm.Muma 病毒的一部分, 在后面的教程里,大家将有机会见到这个病毒的真面目。那是不是说,在同一个目录下至少存在两个批处理脚本文件(只有一个你调用谁?)?注意了,这句话错了!只有一个照样可以调用----调用自身!(默认脚本文件名 a.bat):

net send %1 This is a call example.
call a.bat

这两句一结合, 效果自然不怎么样, 因为只有一台机器来发消息, 谁怕谁啊?可如果有 100 台机器同时执行,而且每台机器开100个窗口同时向一个目标机器发消息的话,呵呵。这里 call a.bat 的作用就是调用自身,执行完前一句 net send 命令后再调用自身,达到了循环执行的目的。给出一个很有意思的脚本,有兴趣的朋友可以实验一下(默认脚本文件名为 a.bat):

call a.bat

一定要在 DOS 窗口下执行,否则只会看到一个窗口一闪而过,看不到最后结果。

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你有没有跑完全程。
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号