bat

后缀是BAT的文件就是批处理文件,是一种文本文件。简单的说,它的作用就是自动连续执行多条命令,批处理文件的内容就是一条一条的命令。
批处理文件是由一个或一个以上的DOS命令及可执行命令组成的带有扩展名.BAT的文件。当用户以批处理文件名为命令时,DOS会自动依次执行文件中的命令。
批处理文件的特点是一次建立可多次执行。


常用的命令:echo、@、call、pause、rem
echo        --- 表示显示此命令后的字符
echo off    --- 表示在此语句后所有运行的命令都不显示命令行本身
@与echo off --- 相像,但它是加在其他命令行的最前面,表示运行时不显示命令行本身
通俗一点,行首有了@的话,这行命令就不显示了。
ECHO---显示方式设置;其中ECHO ON是使以后的命令在执行前先显示,ECHO OFF是使以后的命令在执行前不显示,ECHO MASSAGE是不论ECHO的状态为ON或OFF,都显示MASSAGE所指定的信息。
@echo off---不显示echo off命令本身,不显示以后各行中的命令本身。
call        --- 调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条文件后将无法执行当前文件后续命令)
psuse       --- 运行此句会暂停,显示Press any key to continue...等待用户按任意键后继续
rem         --- 表示此命令后的字符为解释行,不执行,只是给自己今后查找用
%           --- 表示参数,参数是指在运行批处理文件时的文件名后加的字符串。变量可以从%0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。
比较高级的命令:if、goto、choice、for
if        --- 表示将判断是否符合规定的条件,从而决定执行不同的命令。
1、输入判断
if“参数”==“字符串”  待执行的命令
参数如果等于指定的字符串,则条件成立 ,运行命令,否则运行下一句。
if not “参数”==“字符串”  待执行的命令
2、存在判断
if exist 文件名  待执行的命令
如果存在指定的文件,则条件成立,运行命令,否则运行下一句。
if not exist 文件名  待执行的命令
3、结果判断
if errorlevel 数字  带运行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
if not errorlevel 数字  带运行的命令
goto      --- 批处理文件运行到这里将跳到goto所指定的标号处,一般与if配合使用。
标号:用字符串表示,标号所在行不被执行
goto end


:end
echo this is the end
choice    --- 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数
choice /c:dem defrag,mem,end
将提示
defrag,mem,end[D,M,E]?
for       --- 循环命令,只要条件符合,它将多次执行同一命令。
格式 for [%%f] in (集合) do [命令]
只要参数f在指定的集合内,则条件成立,执行命令。


find --- 这是一个搜索命令,用来在文件中搜索特定字符串,通常也作为条件判断的铺垫程序。
type    --- type a.txt,列出a.txt中的内容
more    --- 
more a.txt和type a.txt,利用more命令,可以达到逐屏或逐行显示的效果;而type命令只能一次把输出显示完,最后的结果就是只能看到末尾部分。
::      --- 这个命令的作用很简单,它是注释命令,在批处理脚本中和rem命令等效,它后面的内容在执行时不显示,也不起任何作用,
因为它只是注释,只增加了脚本的可读性,和C语言中的/*'''''''*/类似。
::是注释符号,::行为注释行,不执行,只是为了让程序更清楚,便于维护和修改。
exit    --- 




组合命令:&、&&、||
  组合命令,顾名思义,就是可以把多个命令组合起来当一个命令来执行。
&,它的作用是用来连接N个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败。
&&,它可以把前后两个命令组合起来当一个命令来用,与&命令不同之处在于,它在从前往后依次执行被它连接的几个命令时会自动判断是否有某个指令出错,
一旦发现出错后将不继续执行后面剩下的命令。
||,这个命令的用法和&&几乎一样,但作用刚好和它相反:利用这种方法在执行多条命令时,当遇到一个执行正确的命令就退出此命令组合,不再继续执行下面的命令。


应用DOS重定向功能
  DOS的标准输入输出通常是在标准设备键盘和显示器上进行的,利用重定向,可以方便地将输入输出改向磁盘文件或其它设备。
如在批处理命令执行期间为了禁止命令或程序执行后输出信息而扰乱屏幕,可以利用DOS重定向功能把输出改向NUL设备(NUL不指向任何实际设备):C:\>COPY A.TXT B.TXT > NUL。
命令执行结束不显示“1 file(s) copied”的信息。有的交互程序在执行时要求很多键盘输入,但有时输入是固定不变的,为加快运行速度,可预先建立一个输入文件,此文件的内容为程序的键盘输入项


,每个输入项占一行。假如有一个程序ZB,其输入项全部包括在文件IN.DAT中,执行C:\>ZB NUL程序就自动执行。


应用DOS管道功能 
  DOS的管道功能是使一个程序或命令的标准输出用做另一个程序或命令的标准输入。如把DEBUG的输入命令写入文件AAA,用TYPE命令通过管道功能将AAA的内容传输给DEBUG,
在DEBUG执行期间不在从控制台索取命令参数,从而提高了机器效率。命令为:C:\>TYPE AAA|DEBUG > BBB
  常用的管道命令:|、>、>>
|命令的作用,就是让前一命令的输出当做后一命令的输入。
>、>>都是输出重定向命令,就是把前面命令的输出写入到一个文件中。这两个命令的唯一区别,>会清掉原有文件中的内容后把新的内容写入原文件;
而>>只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容。
  不常用的管道命令:<、>&、<&
<,输入重定向命令,从文件中读入命令输入,而不是从键盘中读入。
>&,将一个句柄的输出写入到另一个句柄的输入中。
<&,刚好和>&相反,从一个句柄读取输入并将其写入到另一个句柄输出中。


子程序
  在一个批处理文件可用CALL命令调用另一个批处理文件,当子批处理文件执行结束后,自动返回父批处理文件,继续向下执行。




批处理中的一些标记符:
+ COPY命令文件连接符
* ?文件通配符
""字符串界定符
|命令管道符
< > >> 文件重定向符
@命令行回显屏蔽符
/参数开关引导符
:批处理标签引导符
%批处理变量引导符
call如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令。
::起到rem的注释作用。
rem相当与程序中的注释。
第一、除了::之外,任何以:开头的字符行,在批处理中都被视作标号,而直接忽略其后的所有内容,只是为了与正常的标号相区别,
建议使用goto所无法识别的标号,即在:后紧跟一个非字母数字的一个特殊符号。
第二、与rem不同的是,::后的字符行在执行时不会回显,无论是否用echo on 打开命令行回显状态,因为命令解释器不认为它是一个
有效的命令行,就此点来看,rem在某些场合下将比::更为适用;另外,rem可以用于config.sys文件。












例一、
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
exit
执行这个批处理后,可以在你的当前盘建立一个名为a.txt的文件,它里面记录的信息可以帮助你迅速找到最快的QQ的服务器,从而远离“从服务器中转”那一痛苦的过程。这里
>的意思是把前面命令得到的东西放到后面所给的地方,>>的作用和>的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,
这样可以使这个a.txt文件越来越大。


例二、
if exist C:\zhang.jpg del C:\zhang.jpg
echo Run this....
pause
exit


例三、
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt
pause
exit
先用netstat命令检查是否有冰河默认的端口7626在活动,并把结果保存到a.txt中。
然后使用type命令列出a.txt中的内容,再在列出的内容中搜索字符串“7626”,发现有的话则提示中了冰河,否则退出。


例四、
if exist C:\find1.txt del C:\del.txt
echo Run this ....
pause
exist


例五、
help > help.txt
more help.txt
del help.txt


例六、
dir 文件://1%/www/user.mdb && copy 文件://1%/www/user.mdb e:\backup\www
如果远程主机存在user.mdb,则copy到本地e:\backup\www,如果不存在当然就不执行copy了。
If exist 文件://1%/www/user.mdb copy 文件://1%/www/user.mdb e:\backup\www


例七、
dir zhang*.exe || echo Didn't exist file zhang*.exe & pause & exist





























  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u影动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值