个人信息
性别:无法查看,请先登录
地区:**
Email:**
QQ:**
MSN:**
主页:**
日志 - 日历
2008 8.28 Thu
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<> 2008 - 8 <>
搜索BLOG文章

看看你的文章有没有被百度收入

最新访问

XML RSS 2.0 WAP
我的日志
作者: apje 复制  收藏
DOS批处理全面教程2007-04-16
后缀是bat的文件就是批处理文件,是一种文本文件。现在已经用得很少了,但是象IBM笔记本的系统恢复盘就是靠批处理来执行的。简单的说,它的作用就是自动的连续执行多条命令,批处理文件的内容就是一条一条的命令。那它有什么用呢? 比如,在启动wps软件时,每次都必须执行: C:\>cd wps   C:\WPS>spdos   C:\WPS>py   C:\WPS>wbx   C:\WPS>wps 如果每次用WPS之前都这样执行一次,您是不是觉得很麻烦呢? 如果有一个方法,只需编写一个批处理文件,就会自动执行刚才的所有命令,您想不想学呢? 当您看完此节,自己编写的第一个批处理文件顺利执行时,您一定会大吃一惊的。 常用命令   echo、@、call、pause、rem是批处理文件最常用的几个命令,我们就从他们开始学起。 echo 表示显示此命令后的字符;echo off 表示在此语句后所有运行的命令都不显示命令行本身。@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。 call 调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令); pause 运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续; rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的;例:用edit编辑a.bat文件,输入下列内容后存盘为c:\a.bat,执行该批处理文件后可实现:将根目录中所有文件写入 a.txt中,启动UCDOS,进入WPS等功能。 批处理文件的内容为:         文件表示:   echo off            不显示命令行     dir c:\*.* >a.txt       将c盘文件列表写入a.txt     call c:\ucdos\ucdos.bat    调用ucdos     echo 你好            显示"你好"     pause              暂停,等待按键继续     rem 使用wps           注释将使用wps     cd ucdos            进入ucdos目录     wps               使用wps   批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。 %表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。 例如,C:根目录下一批处理文件名为f.bat,内容为 format %1   则如果执行C:\>f a:    则实际执行的是format a: 又如C:根目录下一批处理文件的名为t.bat,内容为 type %1 type %2 ,那么运行C:\>t a.txt b.txt 将顺序地显示a.txt和b.txt文件的内容。此外电脑每次启动时都会寻找autoexec.bat这条批处理文件,从而可执行一些每次开机都要执行的命令,如设置路径path、加载鼠标驱动mouse、磁盘加速smartdrv等,可以使您的电脑真正自动化。 特殊命令 if goto choice for 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。 if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式: 1、if "参数" == "字符串"  待执行的命令 参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号) 如if "%1"=="a" format a: 2、if exist 文件名  待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。如if exist config.sys edit config.sys 3、if errorlevel 数字  待执行的命令 如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2  DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码 goto 批处理文件运行到这里将跳到goto 所指定的标号处, 一般与if配合使用。 如: goto end :end echo this is the end 标号用 :字符串 表示,标号所在行不被执行 choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…… 如: choice /cme defrag,mem,end 将显示 defrag,mem,end[D,M,E]? 例如,test.bat的内容如下: @echo off choice /cme defrag,mem,end if errorlevel 3 goto defrag 应先判断数值最高的错误码 if errorlevel 2 goto mem if errotlevel 1 goto end efrag c:\dos\defrag goto end :mem mem goto end :end echo good bye 此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。 for 循环命令,只要条件符合,它将多次执行同一命令。 格式FOR [%%f] in (集合) DO [命令] 只要参数f在指定的集合内,则条件成立,执行命令 如果一条批处理文件中有一行: for %%c in (*.bat *.txt) do type %%c 含义是如果是以bat或txt结尾的文件,则显示文件的内容。 autoexec.bat DOS在启动会自动运行autoexec.bat这条文件,一般我们在里面装载每次必用的程序,如: path(设置路径)、smartdrv(磁盘加速)、 mouse(鼠标启动)、mscdex(光驱连接)、 doskey(键盘管理)、set(设置环境变量)等。 如果启动盘根目录中没有这个文件,电脑会让用户输入日期和时间。 例如,一个典型的autoexec.bat内容如下: @echo off                  不显示命令行 prompt $p$g                 设置提示符前有目录提示 path c:\dos;c:\;c:\windows;c:\ucdos;c:\tools    设置路径 lh c:\dos\doskey.com                加载键盘管理 lh c:\mouse\mouse.com              加载鼠标管理 lh c:\dos\smartdrv.exe               加载磁盘加速管理 lh c:\dos\mscdex /S /D:MSCD000 /M:12 /V    加载CD-ROM驱动 set temp=c:\temp                  设置临时目录 IF -EXIST 首先用记事本建立一个文件,文件内容如下: @echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist 在C盘保存文件为TEST.BAT 然后执行命令 C:\>TEST1.BAT 这时,如果AUTOEXEC.BAT中有内容的话会显示出来。 接着再建立一个文件,内容如下: @ECHO OFF IF EXIST %1 TYPE %1 IF NOT EXIST %1 ECHO %1 does not exist 也保存在C盘,文件名为TEST2.BAT 然后执行命令 C:\>TEST2 AUTOEXEC.BAT 同样,如果AUTOEXEC.BAT中有内容的话会显示出来。 说明: 1. IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 2. 其中第二个文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1---------%9 ,有点想实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。 更进一步的,建立一个名为ABC.BAT的文件,内容如下: IF ‘%1’ = = ‘ A ’ ECHO XIAO IF ‘%1’ = = ‘ B ’ ECHO TIAN IF ‘%1’ = = ‘ C ’ ECHO XIN 完成后运行C:\>ABC.BAT A B C 屏幕上会显示C:\>XIAOTIANXIA 如果执行C:\>ABC.BAT A B 屏幕上会显示C:\>XIAOTIAN DOS将一个空字符串附给参数%3。 可以将NOT放在IF和条件之间,指示IF在条件为假时执行某一命令。 注意:这个命令可在DOS下输入直接运行。 IF-ERRORLEVEL 用记事本建立一个文件XIAO.BAT,内容如下 @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL = = 0 ECHO 成功拷贝文件 然后执行文件 C:\>XIAO.BAT 如果文件拷贝成功,屏幕就会显示:成功拷贝文件 IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,因此下面的批处理文件是错误的 @ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL = = 0 ECHO 成功拷贝文件 IF ERRORLEVEL = = 1 ECHO 未找到拷贝文件 IF ERRORLEVEL = = 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL = = 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL = = 4 ECHO 拷贝过程中写盘错误 无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。 注意:这个命令是可以在DOS下直接输入的。 例如: C:\>XCOPY \AUTOEXEC.BAT D:\ 之后可以执行 C:\> IF ERRORLEVEL = = 0 ECHO 成功拷贝文件 如果成功,屏幕将显示: 成功拷贝文件 以下就是几个常用命令的返回值: backup 出口状态 意义 0 备份成功 1 未找到备份文件 2 文件共享冲突阻止备份完成 3 用户用ctrl-c中止备份 4 由于致命的错误使备份操作中止 diskcomp 出口状态 意义 0 盘比较相同 1 盘比较不同 2 用户通过ctrl-c中止比较操作 3 由于致命的错误使比较操作中止 4 预置错误中止比较 diskcopy 出口状态 意义 0 盘拷贝操作成功 1 非致命盘读/写错 2 用户通过ctrl-c结束拷贝操作 3 因致命的处理错误使盘拷贝中止 4 预置错误阻止拷贝操作 format 出口状态 意义 0 格式化成功 3 用户通过ctrl-c中止格式化处理 4 因致命的处理错误使格式化中止 5 在提示“proceed with format(y/n)?”下用户键入n结束 xopy 出口状态 意义 0 成功拷贝文件 1 未找到拷贝文件 2 用户通过ctrl-c中止拷贝操作 4 预置错误阻止文件拷贝操作 5 拷贝过程中写盘错误 IF STRING = = STRING 首先用记事本建立一个名为XIAO.BAT的文件,文件内容如下: @echo off IF "%1" = = "A" FORMAT A: 接着执行 C:\>XIAO A 屏幕上就出现是否将A:盘格式化的内容。 这个语句的格式为 IF "参数" = = "字符串"  待执行的命令 参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。 注意:要想在DOS下直接使用,只有这样 C:\> IF "A" = = "A" FORMAT A: 毫无意义。 GOTO 首先用记事本建立一个名为XIAO.BAT的文件,文件内容如下: @ECHO OFF IF EXIST C:\AUTOEXEC.BAT GOTO KB : KB COPY C:\AUTOEXEC.BAT D:\ : DONE 注意: 1. 标号前是冒号(:) 2. 标号的最后一行是: DONG 3. DOS支持最长为八位的标号,当无法区别两个标号时,将跳转至最近的一个标号。 FOR 首先用记事本建立一个名为XIAO.BAT的文件,文件内容如下: @ECHO OFF FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C 接着执行 C:>XIAO.BAT 执行以后,屏幕上会将C:盘所有的以 *.BAT *.TXT *.SYS为扩展名的文件内容显示出来,当然不包括隐藏文件。 说明:字符%%C 表示FOR命令变量,FOR支持通配符。 附:批处理命令与变量 1:for命令及变量 基本格式: FOR /参数 %variable IN (set) DO command [command_parameters] %variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。 批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use \\ip\ipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3 (set):指定一个或一组文件,可使用通配符,如:(D:\user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个"1"指起始值,第二个"1"指增长量,第三个"254"指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 } command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开 command_parameters:为特定命令指定参数或命令行开关 IN (set):指在(set)中取值;DO command :指执行command 参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:\pass.txt)时 }。 用法举例: @echo off echo 用法格式:test.bat *.*.* > test.txt for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \\%1.%%G /user:administrator | find "命令成功完成" >>test.txt 存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。 /L指用增量形式(即从1-254或254-1);输入的IP前面三位:*.*.*为批处理默认的 %1;%%G 为变量(ip的最后一位);& 用来隔开echo 和net use 这二个命令;| 指建立了ipc$后,在结果中用find查看是否有"命令成功完成"信息;%1.%%G 为完整的IP地址;(1 1 254) 指起始值,增长量,结止值。 @echo off echo 用法格式:ok.bat ip FOR /F %%i IN (D:\user.dic) DO smb.exe %1 %%i D:\pass.dic 200 存为:ok.exe 说明:输入一个IP后,用字典文件d:\pass.dic来暴解d:\user.dic中的用户密码,直到文件中值取完为止。%%i为用户名;%1为输入的IP地址(默认)。 #7 七: 2:if命令及变量 基本格式: IF [not] errorlevel 数字 命令语句 如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为“真”。 例:IF errorlevel 0 命令 指程序执行后返回的值为0时,就值行后面的命令;IF not errorlevel 1 命令指程序执行最后返回的值不等于1,就执行后面的命令。 0 指发现并成功执行(真);1 指没有发现、没执行(假)。 IF [not] 字符串1==字符串2 命令语句 如果指定的文本字符串匹配(即:字符串1 等于 字符串2),就执行后面的命令。 例:“if "%2%"=="4" goto start”指:如果输入的第二个变量为4时,执行后面的命令(注意:调用变量时就%变量名%并加" ") IF [not] exist 文件名 命令语句 如果指定的文件名存在,就执行后面的命令。 例:“if not nc.exe goto end”指:如果没有发现nc.exe文件就跳到":end"标签处。 IF [not] errorlevel 数字 命令语句 else 命令语句或 IF [not] 字符串1==字符串2 命令语句 else 命令语句或 IF [not] exist 文件名 命令语句 else 命令语句 加上:else 命令语句后指:当前面的条件不成立时,就指行else后面的命令。注意:else 必须与 if 在同一行才有效。 当有del命令时需把del命令全部内容用< >括起来,因为del命令要单独一行时才能执行,用上< >后就等于是单独一行了;例如:“if exist test.txt. <del test.txt.> else echo test.txt.missing ”,注意命令中的“.”

原创文章如转载,请注明:转载自迷惘的天空 [ http://apje.blog.zj.com/ ]
本文链接地址:http://apje.blog.zj.com/blog/d-119659.html

TAG: 批处理
相关文章
文章评论0条回复
[guest] 评论于
此评论正在审核
评分:5
给文章评分
评分: -5 -3 -1 - +1 +3 +5
我来说两句
认证码*   看不清,就点我! 输入四位字母或数字
(您还没有登录,登录发表)
粗体 斜体 下划线 插入url链接 飞行字 移动字