收藏 分享(赏)

bat(批处理)基础学习与提高.doc

上传人:jw66tk88 文档编号:8728381 上传时间:2019-07-09 格式:DOC 页数:33 大小:88KB
下载 相关 举报
bat(批处理)基础学习与提高.doc_第1页
第1页 / 共33页
bat(批处理)基础学习与提高.doc_第2页
第2页 / 共33页
bat(批处理)基础学习与提高.doc_第3页
第3页 / 共33页
bat(批处理)基础学习与提高.doc_第4页
第4页 / 共33页
bat(批处理)基础学习与提高.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、bat(批处理)基础学习与提高前言: 去年可为是个病毒年,在防毒中 BAT 文件真的是攻不可没看着各式各样的批处理文件你是否也想自己亲手写一个那.内容: 其实想学习的人在百度或 GOOLE 也搜到大把资料,我也是想仔细学习在网上搜集了点小资料,并附带一个编辑工具给大家. 学习写批处理文件批处理文件或批处理程序是一个包含若干 MS-DOS 命令的正文文件,扩展名为.BAT。当在命令提示符下敲入批处理程序的名称时,MS-DOS 成组执行此批处理程序中的命令。任何在命令提示符下可使用的命令都可用在批处理程序中。此外,下面 MS-DOS 命令是专门在批处理程序中使用的。 = 常用命令echo、call

2、、pause、rem(小技巧:用:代替 rem)是批处理文件最常用的几个命令,我们就从他们开始学起。 = willsort 编注= 首先, 不是一个命令, 而是 DOS 批处理的一个特殊标记符, 仅用于屏蔽命令行回显.下面是 DOS 命令行或批处理中可能会见到的一些特殊标记符: CR(0D) 命令行结束符 Escape(1B) ANSI 转义字符引导符 Space(20) 常用的参数界定符 Tab(09) ; = 不常用的参数界定符 + COPY 命令文件连接符 * ? 文件通配符 “ 字符串界定符 | 命令管道符 文件重定向符 命令行回显屏蔽符 / 参数开关引导符 : 批处理标签引导符 %

3、批处理变量引导符 其次, : 确实可以起到 rem 的注释作用, 而且更简洁有效; 但有两点需要注意: 第一, 除了 : 之外,任何以 :开头的字符行, 在批处理中都被视作标号, 而直接忽略其后的所有内容, 只是为了与正常的标号相区别, 建议使用 goto 所无法识别的标号, 即在:后紧跟一个非字母数字的一个特殊符号. 第二, 与 rem 不同的是, :后的字符行在执行时不会回显, 无论是否用 echo on 打开命令行回显状态,因为命令解释器不认为他是一个有效的命令行, 就此点来看, rem 在某些场合下将比 : 更为适用; 另外, rem 可以用于 config.sys 文件中.= ech

4、o 表示显示此命令后的字符 echo off 表示在此语句后所有运行的命令都不显示命令行本身 与 echooff 相象,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行) 。 call调用另一个批处理文件(如果不用 call 而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令) 。 pause运行此句会暂停批处理的执行并在屏幕上显示 Press any key to continue.的提示,等待用户按任意键后继续 rem表示此命令后的字符为解释行(注释) ,不执行,只是给自己今后参考用的(相当于程序中的注释) 。 = w

5、illsort 编注= 此处的描述较为混乱, 不如直接引用个命令的命令行帮助更为条理- ECHO当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。 在运行批处理程序时,MS-DOS 一般在屏幕上显示(回显)批处理程序中的命令。使用 ECHO 命令可关闭此功能。 语法 ECHO ON|OFF 若要用 echo命令显示一条命令,可用下述语法: echo message 参数 ON|OFF指定是否允许命令的回显。若要显示当前的 ECHO 的设置,可使用不带参数的 ECHO 命令。 message 指定让 MS-DOS 在屏幕上显示的正文。- CALL从一个批处理程序中调用另一

6、个批处理程序,而不会引起第一个批处理的中止。 语法 CALL drive:pathfilename batch-parameters 参数 drive:pathfilename指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT 作扩展名。 batch-parameters 指定批处理程序所需的命令行信息。- PAUSE暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处 理程序中使用该命令。 语法 PAUSE- REM在批处理文件或 CONFIG.SYS 中加入注解。也可用 REM 命令来屏蔽命令(在 CONFIG.SYS 中也可以用分号(;)代替 REM 命令,

7、但在批处理文件中则不能替代) 。 语法 REM string 参数string 指定要屏蔽的命令或要包含的注解。 =例 1:用 edit 编辑 a.bat 文件,输入下列内容后存盘为 c:a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt 中,启动 UCDOS,进入 WPS 等功能。批处理文件的内容为: 命令注释: echo off 不显示后续命令行及当前命令行 dir c:*.*a.txt 将 c 盘文件列表写入 a.txt call c:ucdosucdos.bat 调用 ucdos echo 你好 显示“你好“ pause暂停,等待按键继续 rem 准备运行 wps

8、 注释:准备运行 wps cd ucdos 进入 ucdos 目录wps 运行 wps 批处理文件的参数批处理文件还可以像 C 语言的函数一样使用参数(相当于 DOS 命令的命令行参数) ,这需要用到一个参数表示符“%“。%1-9表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者 Tab)分隔的字符串。变量可以从%0 到%9,%0 表示批处理命令本身,其它参数字符串用%1 到%9 顺序表示。 例 2:C:根目录下有一批处理文件名为 f.bat,内容为: echo off format %1 如果执行 C:f a: 那么在执行 f.bat 时,%1 就表示 a:,这样 format

9、%1 就相当于 formata:,于是上面的命令运行时实际执行的是 format a: 例 3:C:根目录下一批处理文件名为 t.bat,内容为: echo off type %1 type %2那么运行 C:t a.txt b.txt %1 :表示 a.txt %2 : 表示 b.txt 于是上面的命令将顺序地显示 a.txt和 b.txt 文件的内容。 特殊命令 if goto choicefor 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。有三种格式: 1、if not “参数

10、“ = “字符串“ 待执行的命令 参数如果等于(not 表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。 例:if “%1“=“a“format a: if 的命令行帮助中关于此点的描述为: IF NOT string1=string2 command 在此有以下几点需要注意: 1. 包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种“防空“字符 2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量 3. command 不是语法所必须的, string2后跟一个空格就可以构成一个有效的命令行 = 2、if not exist

11、路径文件名 待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如: if exist c:config.sys type c:config.sys 表示如果存在c:config.sys 文件,则显示它的内容。 *willsort 编注 * 也可以使用以下的用法: if exist command device 是指 DOS 系统中已加载的设备, 在win98 下通常有: AUX, PRN, CON, NUL COM1, COM2,COM3, COM4 LPT1, LPT2, LPT3, LPT4 XMSXXXX0, EMMXXXX0 A: B: C: ., CLOCK$,

12、CONFIG$, DblBuff$, IFS$HLP$ 具体的内容会因硬软件环境的不同而略有差异,使用这些设备名称时, 需要保证以下三点: 1. 该设备确实存在(由软件虚拟的设备除外) 2. 该设备驱动程序已加载(aux, prn 等标准设备由系统缺省定义) 3.该设备已准备好(主要是指 a: b: ., com1., lpt1.等) 可通过命令 mem/d | find “device“ /i 来检阅你的系统中所加载的设备 另外, 在 DOS 系统中,设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字

13、, 类似于文件名,只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄.= 3、if errorlevel 待执行的命令很多 DOS 程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过 iferrorlevel 命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如 if errorlevel 2 goto x2 = willsort 编注 = 返回值从大到小的顺序排列不是必须的,而只是执行命令为 goto

14、时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式: if errorlevel 1set el=1 if errorlevel 2 set el=2 if errorlevel 3 set el=3 if errorlevel 4 set el=4 if errorlevel 5 set el=5 . 当然, 也可以使用以下循环来替代,原理是一致的: for %e in (1 2 3 4 5 6 7 8.) do if errorlevel %e set el=%e 更高效简洁的用法, 可以参考我写的另一篇关于获取

15、 errorlevel 的文章出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于set 命令的 “重复“ 赋值特性, 由大到小排序会导致较小的返回码 “覆盖“ 较大的返回码. 另外, 虽然 if errorlevel= command 也是有效的命令行, 但也只是 解释命令行时将 = 作为命令行切分符而忽略掉罢了 = 二、goto批处理文件运行到这里将跳到 goto 所指定的标号(标号即 label,标号用:后跟标准字符串来定义)处,goto 语句一般与 if 配合

16、使用,根据不同的条件来执行不同的命令组。 如: gotoend :end echo this is the end 标号用“:字符串“来定义,标号所在行不被执行。 = willsort 编注 = label常被译为 “标签“ , 但是这并不具有广泛的约定性. goto 与 : 联用可实现执行中途的跳转, 再结合 if 可实现执行过程的条件分支, 多个 if即可实现命令的分组, 类似 C 中 switch case 结构或者 Basic 中的 select case 结构, 大规模且结构化的命令分组即可实现高级语言中的函数功能.以下是批处理和 C/Basic 在语法结构上的对照: Batch C

17、 / Basic goto 同时,必须用 /T 指定 nnnn。 /M text 指定提示之前要显示的消息。如果没有指定,工具只 显示提示。 /? 显示帮助消息。 注意: ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选 择返回 1,第二个选择返回 2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的 ERRORLEVEL 值。如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0 的 ERRORLEVEL值。在一个批程序中使用 ERRORLEVEL 参数时,将参数降 序排列。 示例: CHOIC

18、E /? CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C。“ CHOICE /T 10 /C ync /CS/D y CHOICE /C ab /M “选项 1 请选择 a,选项 2 请选择 b。“ CHOICE /C ab /N /M “选项 1 请选择 a,选项 2 请选择 b。“ = willsort 编注= 我列出win98 下 choice 的用法帮助, 已资区分 Waits for the user to choose one of a set of choices.等待用户选择一组待选字符中的一个 CHOICE /C:choices /N /S /

19、T:c,nn text /C:choices Specifies allowable keys. Default is YN 指定允许的按键(待选字符), 默认为 YN /N Do not display choices and ? at end of prompt string. 不显示提示字符串中的问号和待选字符 /S Treat choicekeys as case sensitive. 处理待选字符时大小写敏感 /T:c,nn Default choice to c after nn seconds 在 nn 秒后默认选择 c text Prompt string todisplay

20、要显示的提示字符串 ERRORLEVEL is set to offset of key user presses in choices. ERRORLEVEL 被设置为用户键入的字符在待选字符中的偏移值= 如果我运行命令:CHOICE /C YNC /M “确认请按 Y,否请按 N,或者取消请按 C。“ 屏幕上会显示:确认请按 Y,否请按 N,或者取消请按 C。 Y,N,C? 例:test.bat 的内容如下(注意,用 if errorlevel 判断返回值时,要按返回值从高到低排列): echo off choice /C dme/M “defrag,mem,end“ if errorle

21、vel 3 goto end if errorlevel 2 goto mem if errorlevel 1 goto defrag :defrag c:dosdefrag goto end :mem mem goto end :end echogood bye 此批处理运行后,将显示“defrag,mem,endD,M,E?“ ,用户可选择 d m e,然后 if 语句根据用户的选择作出判断,d 表示执行标号为 defrag的程序段,m 表示执行标号为 mem 的程序段,e 表示执行标号为 end的程序段,每个程序段最后都以 gotoend 将程序跳到 end 标号处,然后程序将显示 go

22、od bye,批处理运行结束。 四、for 循环命令,只要条件符合,它将多次执行同一命令。 语法:对一组文件中的每一个文件执行某个特定命令。 FOR %variable IN (set) DO command command-parameters %variable 指定一个单一字母可替换的参数。 (set) 指定一个或一组文件。可以使用通配符。 command 指定对每个文件执行的命令。 command-parameters 为特定命令指定参数或命令行开关。 例如一个批处理文件中有一行:for %c in (*.bat *.txt) do type %c 则该命令行会显示当前目录下所有以 b

23、at 和 txt 为扩展名的文件的内容。 = willsort 编注= 需要指出的是, 当()中的字符串并非单个或多个文件名时, 它将单纯被当作字符串替换,这个特性再加上()中可以嵌入多个字符串的特性, 很明显 for 可以被看作一种遍历型循环. 当然, 在 nt/2000/xp/2003 系列的命令行环境中, for 被赋予了更多的特性,使之可以分析命令输出或者文件中的字符串, 也有很多开关被用于扩展了文件替换功能. = 批处理示例 1.IF-EXIST 1) 首先用记事本在 C:建立一个 test1.bat 批处理文件,文件内容如下: echo off IF EXIST AUTOEXEC.

24、BAT TYPE AUTOEXEC.BAT IF NOT EXIST AUTOEXEC.BAT ECHOAUTOEXEC.BAT does not exist 然后运行它: C:TEST1.BAT 如果 C:存在 AUTOEXEC.BAT 文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。2) 接着再建立一个 test2.bat 文件,内容如下: ECHO OFF IF EXIST %1 TYPE %1 IF NOT EXIST %1 ECHO %1 does not exist 执行: C:TEST2 AUTOEXEC.BAT该命令运行结果同上。 说明: (1) I

25、F EXIST 是用来测试文件是否存在的,格式为 IF EXIST 路径+文件名 命令 (2)test2.bat 文件中的%1 是参数,DOS 允许传递 9 个批参数信息给批处理文件,分别为%1%9(%0 表示 test2 命令本身),这有点象编程中的实参和形参的关系,%1 是形参,AUTOEXEC.BAT是实参。 = willsort 编注 = DOS 没有“允许传递 9 个批参数信息“ 的限制, 参数的个数只会受到命令行长度和所调用命令处理能力的限制. 但是, 我们在批处理程序中, 在同一时刻只能同时引用 10 个参数, 因为DOS 只给出了 %0%9 这十个参数引用符. = 3) 更进一

26、步的,建立一个名为 TEST3.BAT 的文件,内容如下:echo off IF “%1“ = “A“ ECHO XIAO IF “%2“ = “B“ ECHO TIAN IF “%3“ = “C“ ECHO XIN 如果运行: C:TEST3 A B C 屏幕上会显示: XIAO TIAN XIN 如果运行:C:TEST3 A B 屏幕上会显示 XIAO TIAN 在这个命令执行过程中,DOS 会将一个空字符串指定给参数%3。 2、IF-ERRORLEVEL 建立TEST4.BAT,内容如下: ECHO OFF XCOPYC:AUTOEXEC.BAT D: IF ERRORLEVEL 1 E

27、CHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 然后执行文件: C:TEST4如果文件拷贝成功,屏幕就会显示“成功拷贝文件“,否则就会显示“文件拷贝失败“。 IF ERRORLEVEL是用来测试它的上一个 DOS 命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。 因此下面的批处理文件是错误的: ECHO OFF XCOPYC:AUTOEXEC.BAT D: IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过 ctrl

28、-c 中止拷贝操作 IF ERRORLEVEL 3ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过 ctrl-c 中止拷贝操作预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。 以下就是几个常用命令的返回值及其代表的意义: backup 0 备份成功 1 未找到备份文件 2文件共享冲突阻止备份完成 3 用户用 ctrl-c 中止备份 4 由于致命的错误使备份操作中止 diskcomp 0 盘比较相同 1 盘比较不同 2 用户通过 ctrl-c 中止比较操作 3由于致命的错误使比较操作

29、中止 4 预置错误中止比较 diskcopy 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过 ctrl-c 结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4预置错误阻止拷贝操作 format 0 格式化成功 3 用户通过 ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?“下用户键入 n 结束xcopy 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过 ctrl-c 中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 = willsort 编注= chkdsk 0 未找到错误 255 找到一个

30、或多个错误 choice 0 用户按下ctrl+c/break 1 用户按下第一个键 255检测到命令行中的错误条件 其它 用户按下的有效字符在列表中的位置 defrag 0 碎片压缩成功 1 出现内部错误 2 磁盘上没有空簇。要运行 DEFRAG,至少要有一个空簇 3用户用 Ctrl+C 退出了 DEFRAG 4 出现一般性错误 5 DEFRAG 在读簇时遇到错误 6 DEFRAG 在写簇时遇到错误 7 分配空间有错 8 内存错 9 没有足够空间来压缩磁盘碎片 deltree 0成功地删除一个目录 diskcomp 0 两盘相同 1 发现不同 2 按CTRL+C 终止了比较 3 出现严重错误

31、 4 出现初始化错误 find 0 查找成功且至少找到了一个匹配的字符串 1查找成功但没找到匹配的字符串 2 查找中出现了错误 keyb 0 键盘定义文件装入成功 1 使用了非法的键盘代码,字符集或语法 2 键盘定义文件坏或未找到 4键盘、监视器通讯时出错 5 要求的字符集未准备好 move 0 成功地移动了指定的文件 1 发生了错误 msav /N 86 检查到了病毒 replace 0 REPLACE 成功地替换或加入了文件 1MS-DOS 版本和 REPLACE 不兼容 2 REPLACE 找不到源文件 3 REPLACE找不到源路径或目标路径 5 不能存取要替换的文件 8 内存不够无法

32、执行 REPLACE 11 命令行句法错误 restore 0RESTORE 成功地恢复了文件 1 RESTORE 找不到要恢复的文件 3 用户按 CTRL+C 终止恢复过程 4 RESTORE 因错误而终止 scandisk 0 ScanDisk 在它检查的驱动器上未检测到任何错误 1由于命令行的语法不对,不能运行 ScanDisk 2 由于内存用尽或发生内部错误,ScanDisk 意外终止 3 用户让 ScanDisk 中途退出 4 进行盘面扫描时,用户决定提前退出 254ScanDisk 找到磁盘故障并已全部校正 255 ScanDisk 找到磁盘故障,但未能全部校正 setver 0

33、SETVER 成功地完成了任务 1 用户指定了一个无效的命令开关 2用户指定了一个非法的文件名 3 没有足够的系统内存来运行命令 4 用户指定了一个非法的版本号格式 5 SETVER 在版本表中未找到指定的项 6 SETVER 未找到 SETVER.EXE 文件 7用户指定了一个非法的驱动器 8 用户指定了太多的命令行参数 9 SETVER 检测到丢失了命令行参数 10 在读 SETVER.EXE 文件时,SETVER 检测到发生错误 11 SETVER.EXE 文件损坏 12指定的 SETVER.EXE 文件不支持版本表 13 版本表中没有足够的空间存放新的项 14 在写 SETVER.EX

34、E 文件时 SETVER 检测到发生错误= 3、IF STRING1 = STRING2 建立 TEST5.BAT,文件内容如下:echo off IF “%1“ = “A“ FORMAT A:执行: C:TEST5 A 屏幕上就出现是否将 A:盘格式化的内容。 注意:为了防止参数为空的情况,一般会将字符串用双引号(或者其它符号,注意不能使用保留符号)括起来。如:if %1=A 或者 if %1*=A* 5、GOTO 建立 TEST6.BAT,文件内容如下: ECHO OFF IF EXIST C:AUTOEXEC.BAT GOTO _COPY GOTO _DONE :_COPY COPY C

35、:AUTOEXEC.BATD: :_DONE 注意: (1) 标号前是 ASCII 字符的冒号“:“,冒号与标号之间不能有空格。 (2) 标号的命名规则与文件名的命名规则相同。(3)DOS 支持最长八位字符的标号,当无法区别两个标号时,将跳转至最近的一个标号。 = willsort 编注 =1)标号也称作标签(label) 2)标签不能以大多数的非字母数字字符开始, 而文件名中则可以使用很多 3)当无法区别两个标签时, 将跳转至位置最靠前的标签= 6、FOR 建立 C:TEST7.BAT,文件内容如下: ECHO OFF FOR %C IN (*.BAT *.TXT *.SYS) DO TYP

36、E %C运行: C:TEST7 执行以后,屏幕上会将 C:盘根目录下所有以BAT、TXT、SYS 为扩展名的文件内容显示出来(不包括隐藏文件) 。只有经得起别离的痛苦才是真正的爱情. 爱不是能用语言完全表达的, 只能用生活的全部来表达它. 恋爱和表白爱情,男人比女人更容易些. 幸福的家庭都是相似的 UID156521 贡献 0 阅读权限 150 性别男 来自春秋战国时代的莒国 在线时间 139 小时 注册时间 2007-3-10 最后登录 2010-1-7 查看个人网站 查看详细资料 TOP 棉花糖 论坛历史版主人人为我我为人人帖子 778 精华 1 积分 4300 威望 988 盟币 427

37、 ?个人空间?发短消息?加为好友?当前离线 沙发 大 中 小 发表于 2008-1-1 01:50 只看该作者 LanExpert LE80 千兆网络分析仪这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的-众多高手们也都没给出-反正我不知道

38、-看了我也不一定信服-我是个菜鸟,当然就更不用说了;但我想总结出一个“比较合适的” ,而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而“无条件爱上批处理” ,那么我的目的就达到了-我就是要让你爱上它,我就这么拽,你能怎么着?真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的! 按照我的理解,批处理的本质,是一堆 DOS 命令按一定顺序排列而形成的集合。 OK,never claver and get tobusiness(闲话少说言归正传) 。批处理,也称为批处理脚本,英文译为 BATCH,批处理文件后缀 BA

39、T 就取的前三个字母。它的构成没有固定格式,只要遵守以下这条就 ok 了:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是 DOS。批处理有一个很鲜明的特点:使用方便、灵活,功能强大,自动化程度高。我不想让自己写的教程枯燥无味,因为牵缠到代码(批处理的内容算是代码吧?)的问题本来就是枯燥的,很少有人能面对满屏幕的代码而静下心来。所以我会用很多简单实用的例子让读这篇教程的朋友去体会批处理的那四射的魅力,感受它那古灵精怪的性格,不知不觉中爱上批处理(晕,怎么又是爱?到底批处理和爱有什么关系?答案:没有!) 。再说句“闲话”:要学好批处理,DOS

40、基础一定要牢!当然脑子灵活也是很重要的一方面。例一、先给出一个最 easy 的批处理脚本让大家和它混个脸熟,将下面的几行命令保存为 name.bat 然后执行(以后文中只给出代码,保存和执行方式类似): ping a.txt ping a.txt ping a.txt ping a.txt ping a.txt ping a.txtping a.txt ping a.txt exit是不是都能看的懂?是不是很 easy?但它的作用却是很实用的,执行这个批处理后,可以在你的当前盘建立一个名为 a.txt 的文件,它里面记录的信息可以帮助你迅速找到速度最快的 QQ 服务器,从而远离

41、“从服务器中转”那一痛苦的过程。这里的意思,是把前面命令得到的东西放到后面所给的地方,的作用,和的相同,区别是把结果追加到前一行得出的结果的后面,具体的说是下一行,而前面一行命令得出的结果将保留,这样可以使这个 a.txt 文件越来越大(想到如何搞破坏了?) 。By theway,这个批处理还可以和其他命令结合,搞成完全自动化判断服务器速度的东东,执行后直接显示速度最快的服务器 IP,是不是很爽?后面还将详细介绍。例二、再给出一个已经过时的例子(a.bat): echo off if exist C:Progra1TencentAD*.gif del C:Progra1TencentAD*.g

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

43、本查是否中冰河。脚本内容如下: echo off netstat -a -n a.txt type a.txt | find “7626“ & echo “Congratulations! You have infectedGLACIER!“ del a.txt pause & exit这里利用了 netstat 命令,检查所有的网络端口状态,只需要你清楚常见木马所使用的端口,就能很 easy 的判断出来是否被人种了冰河。然这不是确定的,因为冰河默认的端口 7626,完全可以被人修改。这里介绍的只是方法和思路。这里介绍的是方法和思路稍做改动,就变成可以检查其他木马的脚本了,再改动一下,加进去参数和端口及信息列表文件后,就变成自动检测所有木马的脚本了。呵呵,是不是很过瘾?脚本中还利用了组合命令&和管道命令|,后面将详细介绍。 例四,借批处理自动清除系统垃圾,脚本如下: echooff if exist c:windowstemp*.* del c:windowstemp*.* if

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报