如何写批处理程序文档格式.docx
《如何写批处理程序文档格式.docx》由会员分享,可在线阅读,更多相关《如何写批处理程序文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
echo你好 显示"
你好"
pause 暂停,等待按键继续
rem使用wps 注释将使用wps
cducdos 进入ucdos目录
wps 使用wps
批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。
%表示参数,参数是指在运行批处理文件时在文件名后加的字符串。
变量可以从%0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。
例如,C:
根目录下一批处理文件名为f.bat,内容为format%1
则如果执行C:
fa:
则实际执行的是formata:
又如C:
根目录下一批处理文件的名为t.bat,内容为type%1type%2,那么运行C:
ta.txtb.txt将顺序地显示a.txt和b.txt文件的内容。
此外电脑每次启动时都会寻找autoexec.bat这条批处理文件,从而可执行一些每次开机都要执行的命令,如设置路径path、加载鼠标驱动mouse、磁盘加速smartdrv等,可以使您的电脑真正自动化。
特殊命令
ifgotochoicefor是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。
if表示将判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:
1、if"
参数"
=="
字符串"
待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。
(注意是两个等号)
如if"
%1"
=="
a"
formata:
2、ifexist文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如ifexistconfig.syseditconfig.sys
3、iferrorlevel数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如iferrorlevel2gotox2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码
goto批处理文件运行到这里将跳到goto所指定的标号处,一般与if配合使用。
如:
gotoend
:
end
echothisistheend
标号用:
字符串表示,标号所在行不被执行
choice使用此命令可以让用户输入一个字符,从而运行不同的命令。
使用时应该加/c:
参数,c:
后应写提示可输入的字符,之间无空格。
它的返回码为1234……
如:
choice/cmedefrag,mem,end将显示defrag,mem,end[D,M,E]?
例如,test.bat的内容如下:
@echooff
choice/cmedefrag,mem,end
iferrorlevel3gotodefrag应先判断数值最高的错误码
iferrorlevel2gotomem
iferrotlevel1gotoend
efrag
c:
\dos\defrag
mem
echogoodbye
此文件运行后,将显示defrag,mem,end[D,M,E]?
用户可选择dme,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以gotoend将程序跳到end标号处,然后程序将显示goodbye,文件结束。
for循环命令,只要条件符合,它将多次执行同一命令。
格式FOR[%%f]in(集合)DO[命令]
只要参数f在指定的集合内,则条件成立,执行命令
如果一条批处理文件中有一行:
for%%cin(*.bat*.txt)dotype%%c
含义是如果是以bat或txt结尾的文件,则显示文件的内容。
autoexec.bat
DOS在启动会自动运行autoexec.bat这条文件,一般我们在里面装载每次必用的程序,如:
path(设置路径)、smartdrv(磁盘加速)、mouse(鼠标启动)、mscdex(光驱连接)、doskey(键盘管理)、set(设置环境变量)等。
如果启动盘根目录中没有这个文件,电脑会让用户输入日期和时间。
例如,一个典型的autoexec.bat内容如下:
@echooff 不显示命令行
prompt$p$g 设置提示符前有目录提示
pathc:
\dos;
\;
\windows;
\ucdos;
\tools 设置路径
lhc:
\dos\ 加载键盘管理
\mouse\ 加载鼠标管理
\dos\smartdrv.exe 加载磁盘加速管理
\dos\mscdex/S/D:
MSCD000/M:
12/V 加载CD-ROM驱动
settemp=c:
\temp 设置临时目录
IF-EXIST
首先用记事本建立一个文件,文件内容如下:
IFEXIST\AUTOEXEC.BATTYPE\AUTOEXEC.BAT
IFNOTEXIST\AUTOEXEC.BATECHO\AUTOEXEC.BATdoesnotexist
在C盘保存文件为TEST.BAT
然后执行命令
TEST1.BAT
这时,如果AUTOEXEC.BAT中有内容的话会显示出来。
接着再建立一个文件,内容如下:
@ECHOOFF
IFEXIST%1TYPE%1
IFNOTEXIST%1ECHO%1doesnotexist
也保存在C盘,文件名为TEST2.BAT
TEST2AUTOEXEC.BAT
同样,如果AUTOEXEC.BAT中有内容的话会显示出来。
说明:
1.IFEXIST是用来测试文件是否存在的,格式为
IFEXIST[路径+文件名]命令
2.其中第二个文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1---------%9,有点想实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。
更进一步的,建立一个名为ABC.BAT的文件,内容如下:
IF‘%1’==‘A’ECHOXIAO
IF‘%1’==‘B’ECHOTIAN
IF‘%1’==‘C’ECHOXIN
完成后运行C:
ABC.BATABC
屏幕上会显示C:
XIAOTIANXIA
如果执行C:
ABC.BATAB
XIAOTIAN
DOS将一个空字符串附给参数%3。
可以将NOT放在IF和条件之间,指示IF在条件为假时执行某一命令。
注意:
这个命令可在DOS下输入直接运行。
IF-ERRORLEVEL
用记事本建立一个文件XIAO.BAT,内容如下
XCOPYC:
\AUTOEXEC.BATD:
\
IFERRORLEVEL==0ECHO成功拷贝文件
然后执行文件
XIAO.BAT
如果文件拷贝成功,屏幕就会显示:
成功拷贝文件
IFERRORLEVEL是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,因此下面的批处理文件是错误的
IFERRORLEVEL==1ECHO未找到拷贝文件
IFERRORLEVEL==2ECHO用户通过ctrl-c中止拷贝操作
IFERRORLEVEL==3ECHO预置错误阻止文件拷贝操作
IFERRORLEVEL==4ECHO拷贝过程中写盘错误
无论拷贝是否成功,后面的:
未找到拷贝文件
用户通过ctrl-c中止拷贝操作
预置错误阻止文件拷贝操作
拷贝过程中写盘错误
都将显示出来。
这个命令是可以在DOS下直接输入的。
例如:
XCOPY\AUTOEXEC.BATD:
之后可以执行
IFERRORLEVEL==0ECHO成功拷贝文件
如果成功,屏幕将显示:
以下就是几个常用命令的返回值:
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在提示“proceedwithformat(y/n)?
”下用户键入n结束
xopy
0成功拷贝文件
1未找到拷贝文件
2用户通过ctrl-c中止拷贝操作
4预置错误阻止文件拷贝操作
5拷贝过程中写盘错误
IFSTRING==STRING
首先用记事本建立一个名为XIAO.BAT的文件,文件内容如下:
IF"
=="
A"
FORMATA:
接着执行
XIAOA
屏幕上就出现是否将A:
盘格式化的内容。
这个语句的格式为
要想在DOS下直接使用,只有这样
IF"
毫无意义。
GOTO
IFEXISTC:
\AUTOEXEC.BATGOTOKB
KB
COPYC:
DONE
1.标号前是冒号(:
)
2.标号的最后一行是:
DONG
3.DOS支持最长为八位的标号,当无法区别两个标号时,将跳转至最近的一个标号。
FOR
FOR%%CIN(*.BAT*.TXT*.SYS)DOTYPE%%C
>
执行以后,屏幕上会将C:
盘所有的以*.BAT*.TXT*.SYS为扩展名的文件内容显示出来,当然不包括隐藏文件。
字符%%C表示FOR命令变量,FOR支持通配符。
最近无聊开始研究一种很古老的在dos下无处不在的好东西--批处理程序。
其实也不能算是一种程序,只是将DOS命令写在一个后缀名为.bat(2k/xp中也可以用.cmd)的文件,可以将预先写入的dos命令一起执行,当时是个超级有用的好东东,可以把很多需要一起来执行的命令简化成一条,还有很多意想不到的功能。
不过随着windows这种图形界面的东西出现后,批处理就实在没什么优势了,因为使用起来太不方便,每次用的时候都进入dos界面来运行,任何参数得在dos里跟在程序名后输入,所以很不方便,以至于现在几乎没人用,怀着化废为宝的原则,我开始了对于批处理的研究。
最近才猛然发觉,在windows下,批处理又有它所发挥的余地,而且它有了很多新的优势是其他编程语言没法比较的。
1.编写工具:
无论是写字扳,word,甚至notepad也可以编写,而且不需要编译,改个后缀名直接就能用了
2.编写简单:
因为所有的代码都只是windows内带的命令,没有严格的语法要求,适合像我这种电脑初学者使用,一本dos书就够用了。
3.功能强大;
注册表,文件,服务几乎windows的各个方面都可以用批处理来操作;
没有做不到,只有想不到!
4.在2k/xp中可以将批处理可交互的界面,不需要进入dos界面费力的输入命令参数,在windows中打开直接就能用了
恩,大概以上的种种优势已经够让人心动了,那么今天先来讲点基本的。
首先教大家学批处理的好方法,在cmd中输入“命令/?
”可以显示这条命令的详细使用方法。
输入“copy/?
”我们可以得知以下内容:
将一份或多份文件复制到另一个位置。
COPY[/D][/V][/N][/Y|/-Y][/Z][/A|/B]source[/A|/B]
[+source[/A|/B][+...]][destination[/A|/B]]
source指定要复制的文件。
/A表示一个ASCII文本文件。
/B表示一个二进位文件。
/D允许解密要创建的目标文件
destination为新文件指定目录和/或文件名。
/V验证新文件写入是否正确。
/N复制带有非8dot3名称的文件时,
尽可能使用短文件名。
/Y不使用确认是否要改写现有目标文件
的提示。
/-Y使用确认是否要改写现有目标文件
/Z用可重新启动模式复制已联网的文件。
命令行开关/Y可以在COPYCMD环境变量中预先设定。
这可能会被命令行上的/-Y替代。
除非COPY
命令是在一个批文件脚本中执行的,默认值应为
在改写时进行提示。
要附加文件,请为目标指定一个文件,为源指定
数个文件(用通配符或file1+file2+file3格式)。
呵呵,很详细吧。
恩,先介绍点dos下基础的东西。
首先给个原代码先(很基础的,一个可以修改本机网站地址和静态ip地址的绑定):
@echooff
color0b
setlocal
titleHostsHackv1.0
remWrittenbyKakashi
remFeb16th,2006
echo===================================================
echoHostsHackv1.1
echo.
echo注:
修改hosts文件可以达到屏蔽某些网站的功能
echo版权没有,欢迎盗版!
start
echo现在开始分析%systemroot%\system32\drivers\etc下系统原有hosts文件.......
echo你现在拥有的ip绑定有:
echo*********************************************************
more+18<
%systemroot%\system32\drivers\etc\hosts
echo====准备加入新的ip绑定======
startweb
echo请输入新的网站地址:
set/pwebsite=
if{%website%}=={}gotostartweb
startip
echo请输入绑定的ip:
set/pip=
if{%ip%}=={}gotostartip
echo开始写入hosts文件..............
echo%ip%%website%>
%systemroot%\system32\drivers\etc\hosts
echo完成!
ping127.0.0.1-n3>
nul
cls
gotostart
好了,是不是看得有点头晕呢,不怕,慢慢来,一行一行解释:
@echooff这句的意思是将echo关闭,也就是让批处理什么都不显示,而前加个"
@"
符号表示连echooff这句命令也不显示,一开始就关闭批处理的显示有很多好处:
一方面可以让程序美观简洁,二来可以控制程序显示数据,把需要的数据用命令显示在桌面上让用户能看到,不至于被满屏幕的东西吓倒。
color这条命令是用来控制批处理的美观的,格式如下:
colorbf(b是背景颜色,f是前台(字体)颜色)
0=黑色8=灰色
1=蓝色9=淡蓝色
2=绿色a=淡绿色
3=浅绿色b=淡浅绿色
4=红色c=淡红色
5=紫色d=淡紫色
大家可以根据自己的喜好修改(本人推荐:
color0b)
title:
这条命令的作用就是修改标题栏的文字,美观而已。
使用格式title“任何你喜欢的文字”
rem:
表示解释说明,以rem开头的这一行都算作解释,不会被程序执行。
echo“文字”:
负责显示数据,比方说"
@echo你好"
这条命令运行后屏幕上就会出现“你好”二字。
而"
echo."
表示输出一个回车,也就是空一行。
开始进入重点了:
start这个命令表示建立一个名字为start的跳转点,前面的冒号说明这个start是个跳转点,以后程序只要用个gotostart程序就跳回来了。
下面这里大家跳过几行,能看到这样一句代码“echo现在开始分析%systemroot%\system32\drivers\etc下系统原有hosts文件.......”
%systemroot%表示的是一个名字为systemroot变量,它所带的值就是windows系统目录的路径,这是个系统变量,大家可以在cmd中输入set查询所有变量。
好接着看了
%systemroot%\system32\drivers\etc\hosts:
这段代码比较复杂,首先"
<
"
这个符号表示重定向,将最后的那个hosts文件交给more这个命令来处理,然后more+18表示将hosts这个文件从第18行开始显示,就是略过前18行的内容(那些内容大家可以自己去看,是windows的说明内容)
开始进入交互部分了:
这段代码当作公式来记忆:
set/pwebsite=:
表示将用户的输入来作为website的值,而交互部分必须要检测用户输入的值是不是不存在,否则程序要错误,所以要是错误的话返回程序重新输入
最后个重点是将用户输入两个值,再加入到文件后面"
表示追加,“>
”表示重新写,会删除原来的内容,然后echo两个变量显示到屏幕上,现在加个重定向到文件,就追加到原来的文件咯,最后那个ping127.0.0.1-n3就是表示要延时3秒,加个>
nul,nul表示没有,重定向到没有就是不显示的意思咯。
终于把程序的大致内容讲了一遍,有兴趣的话,大家可以自己来学习一下,看不懂的朋友可以直接将程序代码复制下来,写成bat文件自己先看看。
大家也可以发挥想象自己来写点东西分享下,我也乐意将自己的新作品分享个大家。
########################################################################
DIY爱好者--好工具自己做之批处理的极限应用
(2)
昨天的那个批处理只是大致介绍了一些批处理的基本运用:
@echooff,重定向等等只是点,可能刚开始看有点累,多看多实践就好了。
推荐一个学习方法:
将部分关键代码删除,看看程序会出现什么错误,然后就能比较快地理解程序运行的原理。
好了今天就先给出一个新的代码(比较头大的,我也整了好久了,才憋出这个程序,做梦的时候都在想,但还是可能会有点问题,所以这只是个测试版本,大家如果发先程序有问题的话请跟贴告诉我,这个测试2版本是我目前为止未发现BUG的版本,但没办法保证有什么我没想到的