




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
小飞的blog小飞的blog 首页 涂鸦本 相册 RSS 标签 留言 星标日志 菜鸟 修改 游戏 教程(原创)临走前的流水帐05年上海的最后一天bat 批处理命令 文件 类型 语法 格式 应用 详解(原创) 大 | 中 | 小 2005/08/23 00:12 | by bigfee 咳。做人真累啊。半夜回到家还想写点东西。不知道有多少人会看呢?不管了,别人不把他当成宝贝,咱自己留着当宝贝总是行的。大一的时候看了篇关于如何书写bat文件的文章。那时候看得很仔细,大概都看懂了。不过都年了,基本上没有碰过bat文件,所以忘的都差不多了。今天是离家前的倒数第二个晚上了,突然想重温下bat文件的语法,格式,所以网上找了些资料来,研究研究,把我看懂的东西尽量写的白话一点,人人能看懂.希望能和看这篇文章的人一起学习进步大家知不知道默认共享这回事?这东西用不着的地方可就不是好东西了所以就要删掉但这东西是每次系统重起后都会重新创建的所以每次都要重新打开cmd重新删掉一下极为麻烦但有了批处理文件就不一样了,先把命令输入到批处理文件中,然后加入到启动项中,每次启动就会自动运行,免去了每次输入命令的麻烦至于怎么写这个批处理文件嘛,到文章的结尾我会告诉大家的,但不知道在我写完之前会不会睡着呢?如何创建批处理文件?不要听了批处理文件就感到很神气,其实这东西很简单的你用过记事本没有?用过?好的将记事本打开,什么都不用写,然后选择文件,保存保存类型选择所有文件,文件名则命名为bat这个代表是文件名,你可以随便的起保存好之后,看看你保存的地方,会出现一个白色窗口里有个黄色齿轮的图标这东西就是你创建的批处理文件,双击他就可以运行,但他现在由于里面没有输入任何命令,所以他运行了并不会做任何事情当我们想往这个.bat文件中添加东西时,只要右键选择他,然后选择编辑,就可以打开记事本往内输入命令了批处理文件中的命令是什么?批处理文件中的命令暂时先可以理解为dos命令,等稍后深入理解了以后再进行解释批处理顾名思义就是一大堆东西堆在一起处理换句话说就是往里面写一条条dos命令,然后按顺序挨个执行,效果跟你在cmd里敲dos命令是一个效果只不过用批处理写好之后,要运行只要双击下就可以运行了而不用再一遍一遍的重复的往里面打命令这就是批处理文件的好处除了运行dos命令之外,他还可以支持选择结构if,循环结构for,goto等,与c有点类似,但远没有c全面,并且编写语言十分不规范批处理语法:先讲个最基本的东西echo offecho的意思是回旋,这里的意思就是回显,echooff意思就是关闭回显前面的表示echo off 这一行也不会回显你可以试着去掉和整行去掉的另一个功能是在执行完批处理文件时自动恢复命令回显。如果第一句用的是ECHO OFF,那么在执行完批处理文件以后不会显示命令提示符。举个例子:如果我们先创建一个bat文件,往里面输入:dir 然后保存在c:下然后我们运行cmd,进入c盘根目录下,输入bat,则显示:C:dir驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FFC: 的目录2004-08-2500:45WINDOWS2004-08-2500:51Documents and Settings.C:如果将bat内容修改成echo offdir然后再在cmd里输入bat,则会显示 C:echo off/因为运行了echooff,所以没有显示dir命令,直接显示了结果驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FFC: 的目录2004-08-2500:45WINDOWS2004-08-2500:51Documents and SettingsC:如果将bat文件修改成:echo offdir则显示成:C:1.bat /与前面不同,并没有显示echooff,原因是加了,所以不显示后面的内容又因为加/了echooff,所以后面的命令不显示,直接显示结果驱动器 C 中的卷没有标签。卷的序列号是 0C5D-07FFC: 的目录2004-08-2500:45WINDOWS2004-08-2500:51Documents and SettingsC:通过以上的比较,相信你对echooff命令已经充分掌握了现在已经点了写得累啊!洗澡睡觉去了早晨点就被拉起来了我命苦啊,那么继续写吧接下来讲的是call命令:call是打电话的call,而不是喔靠的靠:)call的意思为调用假如有个批处理文件a.bat和b.bat如果我想运行a.bat的当中运行b.bat如何运行呢?其实很简单,只要在a.bat文件中输入call命令,则可以在a.bat运行的当中,运行b.bat,等b.bat运行完之后,继续执行a.batcall命令格式:CALL drive:pathfilename batch-parametersbatch-parameters 指定批处理程序所需的命令行信息。举例如下,我们在c盘根目录下创建abat文件,内容为:echothis is a.batcall d:b.batecho done然后在d盘根目录下创建b.bat,内容为:echo this is b.bat保存后,打开cmd,进入c盘根目录,然后输入1.bat,显示如下:C:a.batC:echo this is a.batthis is a.batC:call d:b.batC:echo this is b.batthis is b.batC:echo donedone由例子很容易看出来,是先运行a.bat的内容,直到遇到callb.bat后,则调用b.bat,运行完b.bat后,再返回a.bat接着运行callb.bat后面的echodone语句,直至将a.bat的所有批处理命令运行完注:里面有个batch-parameters里面的所指的参数是什么,知道的朋友能否告知,不胜感激PAUSE 命令暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。只能在批处理程序中使用该命令。rem命令:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)同时你可以用两个冒号来替代rem如::等同于一个rem但他们有个区别,就是用:作注释的话他是不回显的,即使你打echoon强制回显也没有同的同时rem可以在config.sys中加注释语法: remcommnet批处理文件参数:有点编程基础的人都知道函数有参数批处理文件也有参数我打个比方,希望能帮助没有语言基础的人也能看的非常明白我从例子里开始吧首先在c盘根目录下创建一个批处理文件 abat,里面输入内容echo %1然后打开cmd,然后进入c盘根目录输入:a this is a canshu得到结果如下:C:a.bat this is a testC:echo this is a testthis is a test输入的a this is a canshu中,a为新建的a.bat的文件名a(后面的.bat可写也可不写),而a后面的this is a canshu这句话就是参数,写在这的参数,在程序运行中就将参数自动放到批处理程序中去那么放在什么位置呢?就是放在%1的地方看了例子,让我们看看整个关于参数的定义如何:批处理文件还可以像C语言的函数一样使用参数(相当于DOS命令的命令行参数),这需要用到一个参数表示符%。 %1-9表示参数,参数是指在运行批处理文件时在文件名后加的以空格(或者Tab)分隔的字符串。变量可以从%0到%9,%0表示批处理命令本身,其它参数字符串用%1到%9顺序表示。/我们上个程序的例子里就有,他就是参数,而输入中thisisatest作为参数就直接放到的位置,于是程序就变成了 echo this is a test再举几个例子帮助你理解:C:根目录下一批处理文件名为b.bat,内容为: echo off type %1 /type为dos中的输出命令,可以用来输出文本文件的内容,比如我们新建一个txt文件/里面输入内容,保存进cmd,如果输入txt则看不了txt文件内容,但是如果我/想看怎么办呢?这时候可以用type命令,只要在cmd里输入typetxt就能显示/txt文件中的内容了type %2 那么运行C:b a.txt b.txt %1 : 表示a.txt %2 : 表示b.txt 于是上面的批处理命令就变成了echo offtype a.txttype b.txt于是上面的命令将顺序地显示a.txt和b.txt文件的内容。没有编程基础的人可能要问,干什么要弄个参数啊?在后面加个参数多麻烦啊?直接往里面写不就好了啊?!其实这样想有对的方面也有错的方面还是举个例子说明吧第一步还是在c盘根目录下新建一个批处理文件,我们取名仍为a.bat往里面的内容输入为:ping %1/ping命令可以简单理解为测试一台机器开着还是没有开,如果开着的话,他就回给你回送回应然后进cmd,我们想测试下的服务器是不是开着,则输入a 对于知道ping命令的人,可以打ping进行检查,但如果想ping的人不知道ping命令怎么用,那怎么办啊?这时候你就可以把命令预先输入到批处理文件中,保存好,然后让不会用的人进cmd,运行你的批处理文件,文件名后面加上他要ping的网站地址就行了换句话说,他想ping就直接加的网址,想pingsina就直接加sina的网址这样只要输入一个参数,而不用改程序本身,整个程序的通用性就大大提高了这是对于一个简单的ping命令,你或许觉得用参数不值得,还是直接改不就好了啊但如果程序有很多条,你一下找不到在哪改怎么办啊?所以,不管你是菜哥,菜弟,菜姐,菜妹,只要运行下,输入参数,结果自己就会出来,不用再象你一样,考虑怎么编写批处理文件人家只要知道是输入什么东西能让批处理程序运行,而编写的人则想的是如何让不懂程序的人能运行程序批处理参数就这么简单,不知道你理解了没有?但如果你想深一步了解批处理参数,可以接着往下看,如果不想深入了解,知道现在这么多也就够了以下粉红色内容为网上资料因为参数只有,但当我们要引用第十个或更多个参数时, 就必须移动DOS 的参数起始指针. shift 命令正充当了这个移动指针的角色, 它将参数的起始指针移动到下一个参数, 类似C 语言中的指针操作. 图示如下: 初始状态, cmd 为命令名, 可以用 %0 引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 &line; &line;&line;&line;&line; &line; &line;&line; &line; &line; %0%1%2 %3 %4 %5 %6%7 %8 %9 经过1次shift后, cmd 将无法被引用 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 &line; &line;&line;&line;&line; &line; &line;&line; &line; &line; %0%1%2 %3 %4 %5 %6%7 %8 %9 经过2次shift后, arg1也被废弃, %9指向为空, 没有引用意义 cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10 &line; &line;&line;&line;&line; &line; &line;&line; &line; &line; %0%1%2 %3 %4 %5 %6%7 %8 %9 遗憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 内核命令行环境下, shift 才支持 /n 参数, 可以以第一参数为基准返复移动起始指针. = if goto choice for高级语法今天就写到这吧,我收拾收拾东西准备滚蛋回学校了可能ifgotochoicefor高级语法要在沈阳才能完成了,祝我好运吧=学校的网吧终于算重新开张了,抓紧时间把剩下的写完if命令说得通俗点,if就相当于我们白话里的如果举个例子:如果a喜欢b,那么a就要娶b这句话翻译成计算机语言就成了ifa喜欢ba就要娶b当然拉,计算机不可能理解a喜欢b,a就要娶b这两句话,这里只是举个例子让你方便理解if语句一共有3种模式,如下:IF NOT string1=string2 commandIF NOT EXIST filename commandIF NOT ERRORLEVEL number commandNOT 指定只有条件为 false 的情况下, Windows XP 才应该执行该命令。ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true。string1=string2如果指定的文字字符串匹配,指定条件为 true。EXIST filename如果指定的文件名存在,指定条件为 mand 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟一个执行 ELSE关键字后的命令的 ELSE 命令。我们先讲解第一种:IF NOT string1=string2 command自然语句意思:如果string1string2,那么执行command下面再举个能实际应用的if语句自然语句:如果输入的参数为,那么显示a计算机语句:echo offif %1=3 echo a=3或者写成echo offif %1=3 echo a=3注意:当要测试的时候,因在cmd底下,输入1.bat 3.因为这里用了是传递参数,具体看文章前部分批处理文件参数.第二种:IF NOT EXIST filename command这条命令用语检测文件是否存在如果存在,执行command如果不存在,则什么也不显示如:我们想检查e盘根目录下是否有一个叫.txt的文件如果存在,则显示exist如果不存在,则什么也不显示批处理命令如下:echo offif exist e:2.txt echo exist 2.txt第三种:IF NOT ERRORLEVEL number command这个我引用点资料,感觉别人写得更详细,引用部分为粉色字部分:if errorlevel 待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如if errorlevel 2 goto x2 = 注 = 返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式: if errorlevel 1 set 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 /此处为一个for循环,后面会继续介绍到的,看不懂可以先跳过去if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 重复 赋值特性, 由大到小排序会导致较小的返回码 覆盖 较大的返回码. 另外, 虽然 if errorlevel= command 也是有效的命令行, 但也只是 解释命令行时将 = 作为命令行切分符而忽略掉罢了 choice命令?goto命令for命令for命令其实就是一个循环命令,如果我们想重复一个语句,就可以用for命令.通过for命令,可以控制循环的次数等.语法:FOR %variable IN (set) DO command command-parameters%variable指定一个单一字母可替换的参数。(set)指定一个或一组文件。可以使用通配符。command指定对每个文件执行的命令。command-parameters 为特定命令指定参数或命令行开关。在批处理文件中使用 FOR 命令时,指定变量请使用 %variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.不知道你你看懂了没有,其实还是很容易理解的,还是举个例子吧我想用type打印所有c盘根目录下的bat文件和txt文件dos底下命令就是typebat.txt先将该文件保存在c盘根目录下,名称为a.bat用for命令如下:for %t in (*.bat *.txt) do type %t%t其实就是代表的一个参数,他的内容在in() 里面括号里的内容.也就是说这句话里的%t就变成了*.bat *.txt了.do就是做的意思,执行type命令,而type后面是%t,而%t又是*.bat *.txt.所以原来这句命令的意思就变成了:type *.bat *.txt执行时进cmd,然后到c盘根目录下输入a.bat就可以打印出c盘根目录下所有扩展名为.bat和.txt的文件内容了.这里要注意:in后面有个空格在xp底下,for命令扩展名被起用因此for的功能变得更加强大.下面讲一个真正的循环.FOR /L %variable IN (start,step,end) DO command command-parameters该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生序列 (5 4 3 2 1)里面第一个1在start的位置,意思是起始位置,第2个1在step位置,英文意思是跨步,在这里面的意思是每次增量为1.后面的5在end的位置,意思是结束时的大小.这句话的意思就是从1(start)开始增加,每次增加1(step),一直到变到5(end)为止.这个有什么用呢?其实我感觉这个东西的用处还是很大的.举个最简单的例子,我们想重复回显i am the best这句话,重复显示10遍.那么for命令如下:for /L %e in (1,1,10) do echo i am the best这时,cmd就会重复输入i am the best10遍.=看完整篇文章了吗?咳.我写的不容易啊.现在不知道你对bat有了什么样的理解,我现在的感觉就是bat就是dos命令的组合,你把dos命令全写进bat命令,只要运行下bat就会挨个执行dos命令,这无疑提供了不少的方便。下面我再举些实例.删除默认共享:对于默认共享不知道你了解多少,反正留着是个隐患,现在唯一的办法好象只能做个bat文件进行删除.命令如下:net share ipc$ /deletenet share admin$ /deletenet share c$ /deletenet share d$ /deletenet share e$ /delete里面的cde为你的盘符。如果你只有一个分区,那么写到net share c$ /delete为止就可以了。如果你有n个分区,那么就挨个写下去。net share d$ /deletenet share e$ /deletenet share f$ /deletenet share g$ /delete登陆到局域网的机器快捷方式(对方机器有密码且为2000或以上系统)net use 密码 /user:用户名explorer bat文件备份注册表set regfile=%date% /设置变量,下面出现%regfile%的都自动替换“当天date”if exist %regfile% goto end /如果发现当天date命名的目录,跳到文件尾。md temp /建temp目录call 1.bat/调用1.batdel1.batren 2.bat 1.batren 3.bat 2.batren 4.bat 3.batecho move%regfile%temp 4.bat/写 移动“当天date命名的目录”到temp的bat文件。md %regfile% /建当天date命名的目录cd %regfile%/进入reg export hkcu hkcu.reg /导出注册表reg export hklm hklm.reg /HKEY_CURRENT_USER缩写hkcu 。存放当前用户个人数据/HKEY_LOCAL_MACHINE缩写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》考前冲刺练习试题含答案详解(黄金题型)
- 股票池维护工具创新创业项目商业计划书
- 2025年教师招聘之《幼儿教师招聘》每日一练试卷附参考答案详解【综合题】
- 2025年教师招聘之《幼儿教师招聘》通关练习题库包带答案详解(典型题)
- 2025年教师招聘之《小学教师招聘》考前冲刺练习题库a4版附答案详解
- 教师招聘之《小学教师招聘》复习提分资料含答案详解(b卷)
- 教师招聘之《幼儿教师招聘》能力检测试卷附答案详解(突破训练)
- 水文环境要素的无人同步实时测量技术
- 押题宝典教师招聘之《小学教师招聘》模考模拟试题【各地真题】附答案详解
- 2025年教师招聘之《幼儿教师招聘》预测试题及参考答案详解(黄金题型)
- 分子泵培训教材课件
- 经济法律关系课件
- etap学习帮助-chapter17保护视图star
- 2022年医院消防安全知识培训课件
- 广东广州市番禺区教育局招考聘用公办中小学临聘教师17人(必考题)模拟卷
- 华泰证券营业网点装修标准五种类型汇总效果图设计方案
- 工程回访及客户满意度表最新文档
- (高职)企业财务会计电子课件完整版PPT全书电子教案
- T∕CHAS 10-4-13-2020 中国医院质量安全管理 第4-13部分:医疗管理住院患者健康教育
- VTE的预防与治疗(课堂PPT)
- 第五章 新型化学纤维
评论
0/150
提交评论