| 查看: 359 | 回复: 3 | |||
| 当前主题已经存档。 | |||
[交流]
手把手教你批处理
|
|||
|
后缀是bat的文件就是批处理文件,是一种文本文件。简单的说,它的作用就是自动的连续执行多条命令,批处理文件的内容就是一条一条的命令。那它有什么用呢? 比如,在启动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支持通配符 [ Last edited by 幻影无痕 on 2006-10-17 at 08:53 ] |
» 猜你喜欢
材料调剂
已经有7人回复
化学工程085602 305分求调剂
已经有10人回复
289求调剂
已经有15人回复
291 求调剂
已经有7人回复
274求调剂
已经有14人回复
北京林业大学硕导招生广告
已经有3人回复
309求调剂
已经有5人回复
292求调剂
已经有8人回复
求调剂
已经有4人回复
一志愿 西北大学 总分282 英语一62 求调剂
已经有3人回复

fengxinglie
荣誉版主 (著名写手)
隐是有所不为,功在事外厚积!
- 应助: 0 (幼儿园)
- 贵宾: 1.8
- 金币: 4144.7
- 红花: 1
- 帖子: 2701
- 在线: 8.4小时
- 虫号: 111598
- 注册: 2005-11-21
- 专业: 中药药性理论
- 管辖: 电脑软件

2楼2006-08-24 20:25:43
terrysun
铁杆木虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 7760.4
- 帖子: 572
- 在线: 12.9小时
- 虫号: 165165
- 注册: 2006-01-12
- 专业: 敏感电子学与传感器
3楼2006-08-28 08:06:08
4楼2006-08-28 11:27:06













回复此楼