bat编程基础语法之实例

来源:http://www.bug315.com/article/79.htm

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

        批处理,也称为批处理脚本,英文译为batch,批处理文件后缀 bat 就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就可以了:

            1、每一行可视为一个命令

            2、每个命令里可以含多条子命令

            3、从第一行开始执行, 直到最后一行结束(即从上到下顺序执行)

            4、它运行的平台是 DOS

        批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。 我不想让自己写的教程枯燥无味, 因为牵缠到代码 (批处理的内容算是代码吧?) 的问题本来就是枯燥的, 很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力, 感受它那古灵精怪的性格,不知不觉中爱上批处理。要学好批处理, DOS基础一定要牢!当然脑子灵活也是很重要的一方面。

例一、先给出一个最easy的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为 name.bat 然后执行。

ping sz.tencent.com > a.txt

ping sz1.tencent.com >> a.txt

ping sz2.tencent.com >> a.txt

exit

        是不是都能看的懂?是不是很 easy?但它的作用却是很实用的,执行这个批处理后, 可以在你的当前盘建立一个名为 a.txt 的文件, 它里面记录的信息可以帮助你迅速找到速度最快的 QQ 服务器,从而远离"从服务器中转"那一痛苦的过程。这里 > 的意思,是把前面命令得到的东西放到后面所给的地方,>> 的作用,和 > 的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行, 而前面一行命令得出的结果将保留, 这样可以使这个 a.txt 文件越来越大。 By the way, 这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东, 执行后直接显示速度最快的服务器 IP,是不是很爽?

例二、再给出一个已经过时的例子(a.bat)。

@echo off

if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\T

encent\AD\*.gif

        为什么说这是个过时的例子呢?很简单,因为现在已经几乎没有人用带广告的 QQ 了,所以它几乎用不上了。但曾经它的作用是不可小窥的:删除 QQ 的广告,让对话框干干净净。这里用地址是 QQ 的默认安装地址,默认批处理文件名为 a.bat,你当然可以根据情况自行修改。在这个脚本中使用了 if 命令,使得它可以达到适时判断和删除广告图片的效果,你只需要不关闭命令执行后的 DOS 窗口,不按 CTRL+C 强行终止命令,它就一直监视是否有广告图片(QQ 也再不断查看自己的广告是否被删除)。当然这个脚本占用你一点点内存,呵呵。

例三、使用批处理脚本查是否中冰河。脚本内容如下:

@echo off

netstat -a -n > a.txt

type a.txt | find "7626" && echo "Congratulations! You

have infected GLACIER!"

del a.txt

pause & exit

        这里利用了netstat 命令,检查所有的网络端口状态,只需要你清楚常见木马所使用的端口,就能很 easy 的判断出来是否被人种了冰河。然这不是确定的,因为冰河默认的端口 7626,完全可以被人修改。这里介绍的只是方法和思路。 这里介绍的是方法和思路稍做改动, 就变成可以检查其他木马的脚本了,再改动一下, 加进去参数和端口及信息列表文件后, 就变成自动检测所有木马的脚本了。呵呵,是不是很过瘾?脚本中还利用了组合命令&&和管道命令|。

例四、借批处理自动清除系统垃圾,脚本如下:

@echo off

if exist c:\windows\temp\*.* del c:\windows\temp\*.*

if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~

1\*.*

if exist c:\windows\History\*.* del c:\windows\History\

*.*

if exist c:\windows\recent\*.* del c:\windows\recent\*.

*

将以上脚本内容保存到 autoexec.bat 里, 每次开机时就把系统垃圾给自动删除了。 这里需要注意两点: 

    一、 DOS 不支持长文件名, 所以就出现了 Tempor~1这个东东 

    二、 可根据自己的实际情况进行改动, 使其符合自己的要求

例五、先看一个实例。这是一个很有意思的脚本, 一个小巧实用的好东东,把批处理"自动化"的特点体现的淋漓尽致。 先介绍一下这个脚本的来历: 大家都知道汇编程序(MASM)的上机过程,先要对源代码进行汇编、连接,然后再执行, 而这中间有很多环节需要输入很多东西,麻烦的很。如何使这个过程变的简单呢?

@echo off

::close echo

cls

::clean screen

echo This programme is to make the MASM programme autom

ate

::display info

echo Edit by CODERED

::display info

echo Mailto me : qqkiller***@sina.com

::display info

if "%1"=="" goto usage

::if input without paramater goto usage

if "%1"=="/?" goto usage

::if paramater is "/?" goto usage

if "%1"=="help" goto usage

::if paramater is "help" goto usage

pause

::pause to see usage

masm %1.asm

::assemble the .asm code

if errorlevel 1 pause & edit %1.asm

::if error pause to see error msg and edit the code

link %1.obj & %1

::else link the .obj file and execute the .exe file

:usage

::set usage

echo Usage: This BAT file name [asm file name]

echo Default BAT file name is START.BAT

::display usage

        已经给出了每一行命令的解释,两个冒号后面的内容为前一行内容解释,注释在脚本执行时不显示,也不起任何作用。倒数第 5 行行首有一个冒号,可不是笔误哦!具体作用后面会详细讲到。此脚本中 masm 和 link 是汇编程序和连接程序,必须和 edit 程序以及你要编辑的源代码一起在当前目录中。使用这个批处理脚本, 可以最大可能的减少手工输入, 整个过程中只需要按几下回车键, 即可实现从汇编源代码到可执行exe文件的自动化转换, 并具备智能判断功能: 如果汇编时源代码出现错误 (汇编不成功), 则自动暂停显示错误信息,并在按任意键后自动进入编辑源代码界面; 如果源代码汇编成功, 则进行连接, 并在连接后自动执行生成的 exe 文件。 另外, 由于批处理命令的简单性和灵活性, 这个脚本还具备良好的可改进性, 简单进行修改就可以符合不同朋友的上机习惯。 正在学汇编的朋友,一定别忘了实习一下!在这个脚本中出现了如下几个命令:@、echo、::、pause、:和 goto、%以及 if。

来源:http://www.bug315.com/article/79.htm

猜你喜欢

转载自loginleft.iteye.com/blog/2186035