赞
踩
批处理文件是扩展名为.bat 或.cmd的文本文件,每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。
批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。
批处理的特点:使用方便、灵活,功能强大,自动化程度高。
1)> 把前面命令得到的结果存入后面所给的文件中(若不存在则创建) ,会清除掉原有文件中的内容后把新的内容写入原文件
例:ping 192.168.1.100 > a.txt
2)>> 作用与>的相同,区别是把结果追加到前一行得出的结果的下一行,而前面一行命令得出的结果将保留,不会改动其中的原有内容
例:ping 192.168.1.100 >> a.txt
3)@ 让执行窗口中不显示后面这一行的命令本身
例:@echo off,@的作用就是让脚本在执行时不显示后面的echo off部分
4)echo 反馈、回显的意思。其实它是一个开关命令:打开和关闭,即echo on 和echo off,不显示echo off命令本身,不显示以后各行中的命令
echo命令的用法2:可以用它来显示信息,且不显示echo本身,例:echo Default BAT file name is START.BAT
echo命令的用法3:直接编辑文本文件,例:echo nbtstat -A 192.168.0.1 > a.bat 将命令“ nbtstat -A 192.168.0.1 ”输入到a.bat中,文件不存在则创建
5):: 注释,与rem等效,它后面的内容在执行时不显示,也不起任何作用,只是注释,只是增加脚本的可读性
6)pause 让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . . ,让使用者看清楚程序信息,或显示错误的汇编代码信息
7):和goto goto是个跳转命令,: 是一个标签,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方
例:goto XYZ
……
:XYZ
……
8)% 代表参数,如:用%1代表的IP,2%代表的username,3%代表password等等,方便灵活应用
9)if 表示判断,也可用else表示否则的逻辑
IF [NOT] ERRORLEVEL number do command
IF [NOT] string1==string2 do command
IF [NOT] EXIST filename do command
例1:if "%1"=="" goto XYZ 如果参数1等于空,则跳转到XYZ标签运行
例2:如果错误(1表示是,0表是否,errorlevel为1表示‘错误’),则按任意键后进入编辑页面,否则用link程序连接生成的obj文件
if errorlevel 1 pause & edit %1.asm
link %1.obj
例2等效于:
if not errorlevel 1 link %1.obj
pause & edit %1.asm
10) call 从一个批处理脚本中调用另一个批处理脚本,也可以调用自身,达到循环执行的效果,例:call 2.bat
11) find 搜索
例:先用netstat命令检查是否有冰河默认的端口7626在活动,并把结果保存到a.txt中。然后使用type命令列出a.txt中的内容,再在列出的内容中搜索字符串“7626” ,发现有的话则提示中了冰河,否则退出。
如果不使用type命令列出a.txt中的内容,而是直接使用find命令在a.txt中找“7626”(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必须得给出这个a.txt的绝对路径
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause & exit
12) for、set、shift
13) 管道命令 | (> 和>>也是管道命令),把前一命令的输出当后一命令的输入来用
例:help | more 前一命令的输出,就是help命令执行后显示的DOS所支持的所有非隐含命令,而这个结果刚好做了后一命令more的输入。等效于 help > a.txt more a.txt del a.txt
help 让DOS显示其所支持的所有非隐含命令(net help显示net命令的帮助信息)
more命令,可以达到逐屏或逐行显示输出的效果,而type命令只能一次把输出显示完,最后的结果就是只能看到末尾的部分
14) <、>&、<& 这三个命令也是管道命令,但它们一般不常用
15) &、&&、||(组合命令)
& 是最简单的一个组合命令,它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败,例:copy a.txt b.txt /y & del a.txt
&& 从前往后依次执行被它连接的几个命令时会自动判断是否有某个命令执行出错,一旦发现出错后将不继续执行后面剩下的命令
|| 与&&相反,在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令
16)简单的优先级问题,例:dir c:\ && dir d:\ > a.txt 想要达到的效果,同时执行两个dir,然后把得到的结果>到a.txt里
组合命令&&的优先级没有管道命令>的优先级高,所以这句在执行时将本分成这两部分:dir c:\和dir d:\ > a.txt,而并不是如你想的这两部分:dir c:\ && dir d:\和> a.txt。要使用组合命令&&达到题目的要求,
必须得这么写: dir c:\ > a.txt && dir d:\ >> a.txt ,这样,依据优先级高低,DOS将把这句话分成以下两部分:dir c:\ > a.txt和dir d:\ >> a.txt
各种DOS命令是批处理的BODY(实在找不出一个更合适的词来形容他们之间的关系),学好DOS命令是学好批处理的前提。
其他DOS命令如copy、dir、del、type、path、break、start等内部命令,以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批处理里的应用非常广泛。
编写一个批处理文件时,注意,添加注释,表明批处理的用途,编辑人,公司等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。