




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容:批处理应用的几个例子作者:e哥(eaggle_wei)时间:2011.3.6-2011.6.221. 刷BIOS我们在做测试工作时,经常要刷BIOS,而且BIOS时常更新,为了方便我们通常会把同一个机种的BIOS放在U盘中那个机种的文件名下,例如我做的P4LJ0的案子,里面BIOS的版本从P4LJ0001一直更新到P4LJ0017,也就是文件名P4LJ0里面有17个关于BIOS的子文件,那么我们在刷BIOS时(比如我们刷P4LJ0001的bios)在dos下就会输入:C:cd P4LJ0C:P4LJ0cd P4LJ0001C: P4LJ0P4LJ0001bios.bat这样一步一步来很麻烦,尤其是要刷新几十台机器的时候,所以我们就想到写个批处理放到根目录下,这样就不会每次按键按得手疼了。例:cd P4LJ0cd P4LJ0001bios.bat我们把以上内容放到一个简单字母或者数字命名的批处理中,保存下来存到U盘根目录下,例如保存到1.bat中。这样刷新时直接在提示符C:下输入1,然后回车就OK了,是不是很省事?当然有没有全自动化的,就是只需要插U盘,然后设置从U盘启动就OK了的?当然有了,比如我们把这个批处理命名为autoexec.bat就可以实现了,因为批处理默认这个批处理文件自动执行,但本人不建议这样做,即使你这样做了在工作结束后一定要记得把它删掉,否则可能图一时方便为以后制造不必要的麻烦。比如你把U盘插到另一个不共用的BIOS的机种上启动,这时刷完BIOS你就悲剧了,开不了机。当然像我这种菜鸟,在刚开始看批处理的时候,连如何生成.bat文件都不懂,还以为是个高科技的东西,每次都是把一个现成的批处理文档换个位置重命名后,把要修改的内容从UltraEdit编辑器里面拷贝进去。后来找到一种新方法,先保存到一个txt文档中,然后重命名时强制修改后缀,如把1.txt重命名为1.bat后回车,当然电脑会提示你“如果更改扩展名,可能会导致文件不可用,确实要更改吗?不理会它,点是就可以了。不过使用这种方法时要注意不能把文件设为隐藏文件名,否则你找不到扩展名。至于怎么修改,哥好人做到底,知道的就跳过。打开我的电脑/计算机在最上面的标题栏点“工具”文件夹选项查看勾选“隐藏已知文件类型的扩展名”。2. 打开工作时要用到一天的东西批处理在windows操作系统出现以后,很少有人问津了,像我们干BIOS的能够有幸知道一些,已经成为批处理的有生力量了,但一个编程高手如果不懂批处理,顶多只能算有点小成绩,像我等菜鸟懂一点批处理,毕竟还是有好处的,凡是病毒大多都包含有批处理,因为它太强大了,只要你轻轻双击一下鼠标,其他的工作就不用你做了,所以其实有时候不是病毒厉害,是你不懂病毒而打开了它,当然现在很多病毒是繁殖能力极强的,只要你插了U盘,就会被感染,这样子你就会防不胜防,所以瑞星,金山毒霸等这些杀毒软件还是需要的。不过要知道,杀毒软件永远滞后于病毒,所以你懂点批处理的小常识,就可以尽量避免打开某些恶意软件,增强你的防范能力。陈冠希的艳照门据说就是不懂照相机有备份恢复删除的知识而传出来的,所以建议大家没事多学点东西。言归正传,比如我们要打开工作时常用的OUTLOOK,lingoes,Skype等东西,每次双击再打开,这样其实也不麻烦,但有没有办法一次性把他们都打开呢?答案是肯定的,那就是写个批处理。在写批处理之前,你首先要明白你的目的,就是这个批处理要一次性实现打开OUTLOOK,lingoes,Skype,然后要知道windows下能够执行的程序也是以.exe为后缀的可执行程序,然后要知道这个可执行程序的路径,知道这三点,你写批处理的准备工作就完成了一半。我们先来看一个简单的例子,比如桌面上有一个“我的报告.doc”文档你想打开,怎样用批处理实现,你可能以为e哥吃饱了撑的,双击不就直接打开了吗?是的,不过对批处理来说,很多复杂的东西就是用简单的语句实现的,就像数学里学的一些公理,两点之间线段最短,看起来大家都知道,无法证明,所以叫做公理。但很多人知道三角形两边之和大于第三边,这是个定理,但却不知道为什么,其实证明很简单,不为什么,两点之间线段最短嘛,这就是证明。袁隆平是杂交水稻之父,是个实践家,他本身又是个农民,他说自己不知道中学里的数学课为什么会讲负负得正,但凭他对杂交水稻的贡献,他依然是一个专家,所以我们不能吹毛求疵,求全责备,就像韩寒所说,在这个世界你做不了全才,就把“全”下面的王去掉,做一个人才也很不错,如果你境界更高,连人才也不要做了,就像胡锦涛,在外交上你要说我们的胡主席是个人才,那准被外交家笑掉大牙,哥们,那不是人才,那叫人物。如果做学问,你是得弄明白为什么负负得正,很简单的问题,e哥虽才疏学浅,不知道的找e哥也可以给你答案。但相信每个人的智商都不低于e哥,e哥曾在goggle上百度了一个专门测智商的测试题,很不幸,e哥被确诊为弱智。不过我跟有个人相似,他小时候也是弱智,后来变成了天才,让e哥明白丑小鸭也有变白天鹅的那一天,他就是爱因斯坦,这个人全凭想象,基于惯性系的相对性和真空中光速最大且不变的假设,想出了相对论,后被验证是“相对”正确的,诺贝尔奖没有在他有生之年把这个奖颁发给他的相对论,不过索性天才也有被人理解的时候,那就是他是因为解释了光电效应获得了此殊荣,反映了他的物理思想远远超越了他的时代,事实上他的重要论断都是在几十年以后被证实的,因此不愧为100多年来最伟大的天才科学家。现在我们来看看如何实现批处理打开“我的报告.doc”文档。Start 我的报告.Doc然后保存到1.bat中即可打开,当然了,简繁可能存在不兼容的现象,尤其是我们C公司,如果你的电脑默认是繁体中文,那么你必须保证批处理中的“我的报告”以及命名的“我的报告”文档这四个字均是繁体的才行,不然会弹出让人反感的报错提示,如果你嫌麻烦,干脆把所有需用批处理执行的文档名都改为英文,这样就不会出错了,谁让牛逼的英语成为世界上通用的语言呢,努力让中文成为通用语言吧,兄弟。必须说明的是,你这个1.bat也只能放在桌面上才能执行,不信你把它放到别的任意子文件夹或者D盘等中试试,是不是又有烦人的报错提示,哈哈,兄弟,批处理默认相同目录路径。当然至于为什么使用start命令,需要你慢慢掌握批处理的基本命令,我也是菜鸟一个,百度上有很多关于批处理命令的教程,自己下一个好好看吧下面我要说的是路径,我的电脑中“我的报告.Doc”的路径是:C:Userseaggle_wei.GIDesktop查看路径很简单,不用我教了吧,属性里面有的。那是不是改为 Start C:Userseaggle_wei.GIDesktop我的报告.Doc 然后就可以实现在电脑任意位置执行都可以打开了呢?实践是检验真理的唯一标准,试试看,保存为1.bat,双击!恭喜你,答对了,虽然放在桌面上,但不负众望,你用这个也可以打开了,跟刚刚在桌面上使用 Start 我的报告.Doc 命令看起来没什么两样,都打开了。不过,请你把1.bat换个位置,(只要不在桌面上,在电脑的任何位置都行),再双击,奇迹出现了,放在哪里都能打开。呵呵,是不是很有成就感,想不想搞破坏,e哥教你一招,在1.bat的内容中加上call 1.Bat保存,敢双击吗?没什么不敢的,双击后你的“我的报告.Doc”文档将不停的打开,你就不停的叉吧,累死你也关不完,它是无限循环,怎么办,e哥告诉你,这就叫要想搞破坏先自己学着被破坏,哈哈,想起了武术上常说要想打别人,先要学会挨打,一个道理。不过e哥不希望谁学了东西就搞破坏,这就像练武之人总有正义邪恶之分一样,是黑是白你自己学会掂量。顺便告诉你,赶紧叉掉黑色方框或者关机重启,不然你的CPU要折阳寿了,当然了,如果你装了windows7系统,可能就不会出现这种情况了。 需要补充的是,这是在windows下,如果纯dos下,系统默认每一个用“”分割的路径部分只认可8位,如在路径C:Userseaggle_wei.GIDesktop我的报告.Doc 中Users只有5位, eaggle_wei.GI有13位, Desktop有7位, 我的报告.Doc有4位(当然纯dos下,有一些系统是不支持中文的,需要有专门的支持中文的dos版本),我们可以看到eaggle_wei.GI这个就超过了8位,dos下做处理时会取前六位,然后补上1,2,3等,这是为了避免冲突,即如果支持中文版的话, C:Userseaggle_wei.GIDesktop我的报告.Doc在dos下的路径会截取为C:Userseaggle1Desktop我的报告.Doc。而且dos下打开某个文本文档使用的是type命令,哈哈,所以dos下和windows下批处理还是有一些差异的,自己摸索吧。现在回到我们刚开始的主题,现在让你完成打开那三个东东应该没问题了吧,呵呵,在此不再赘述。另外你也可以写一个打开网页的批处理,依然用到start命令,比如我们加班后要填写加班单,在打开加班单的过程中你要先开公司网页,然后点击eform,如果你手法太差,eform界面经常从你手边溜走,有点麻烦,不如直接写个批处理打开加班单填写界面不就省事多了,内容如下:echo offstart http:/cetefap/ef2kweb/cht/Forms/STDOVTM/STDOVTM_Create_Init.asp把以上内容保存为一个批处理文档,例如:加班单填写.Bat,以后填写加班单的话直接双击就可以了(批处理中网址是不需要那个下划线的哦)。这里你也可以使用超链接功能打开。3. IP地址提取IP地址是电脑的身份证,跟人的身份证不同的是,它的身份证号码是可以变更的,但是为了联网的唯一性,相互联网的两台机器IP地址一般是不相同的,否则就会出现IP地址冲突。在C公司,IP地址可以在公司主页上看到,当然了,你也可以在“执行”命令(windows+R复合键)下输入CMD后回车,然后在弹出的黑不啦叽的对话框中输入ipconfig后回车,在下面会显示你主机的IP地址。现在我们来看一个问题,如果在实际操作中我们需要提取IP地址并把它赋值给一个变量,以便于后续处理,这该怎么办?比如当我知道了IP地址是5,我们设置了一个变量a,在批处理中我们可以用set a=5的语句实现变量赋值,但问题是批处理中如何找到这个IP地址是个问题。当然有了上述提示你可能会想,既然IP地址可以用ipconfig这个命令得到,那么有没有办法把那个IP地址取出来呢?这就是突破口,学过批处理后你就会知道,使用“”可以把上面输出保存到一个文本文档中,于是先写个简单的批处理ipconfig ipinformation.txt把上面的内容保存到IP.bat的批处理档中,双击后你会发现在当前目录下生成了一个ipinformation.txt的文档,打开后里面会有IP地址的记录,这样就成功的获得了你电脑的IP地址的信息,但任务仍然是艰巨的,你需要知道如何从文本中筛选出IP地址来,如果你对批处理命令很熟,你立马就会想到用find命令找到显示IP地址的那一行,可是e哥是个菜鸟,查了好多资料才对find命令有了一知半解的感觉,其实现行的IP地址有IPv4和IPv6之分,我们通常用到的是IPv4,就像那个文档中生成的一样。我费了很大的周折才过滤出了 IPv4 Address. . . . . . . . . . . : 9 这一行的信息,使用find IPv4 1.txt语句即可实现,注意双引号里面IPv4是查找的关键词,ipinformation.txt在一对间括号(注意不是小括号,e哥曾自作聪明的换成了小括号,结果就是不对,细心啊)里面代表要查找的文档,1.txt代表将查找的那一行信息保存在1.txt中,这时你打开1.txt文档里面就显示出来了IPv4 Address. . . . . . . . . . . : 9这一行信息,离目标是不是又近了一步,现在我们要过滤出“9”的信息就差不多完工了,观察我们发现以冒号分割的话,后面那一部分就是我们要的信息了,哈哈,批处理中有没有这样的工具呢?车到山前必有路,e哥也是用心钻研了好久的批处理才从for命令中找到了点蛛丝马迹,for命令是批处理的灵魂,一个批处理高手必须学会灵活的使用for命令,当你对for命令理解透彻了后,你就会爱上批处理,真是众里寻他千百度,蓦然回首,那人却在灯火阑珊处。国学大师王国维讲做学问的第三重境界真的是奥玄颇深啊。是的,人最得意的事情莫过于获得了成就感,自卑的人看到的永远是别人光辉的一面,把自己笼罩在他人的光芒之下,你的心灵也因此萌生了一片阴影,就像被别人照出来的那一道黑色的影子一样,你会快乐吗?所以人要多发现自己的优点,开开心心把能做的事情做好,做好的事情先去做,不会的事情慢慢学,这样日积月累,日后必有所成。记住一句话,我也是人我怕谁?每个人都是从不会走路到学会走路的,相信自己的潜力。for的基本用法你想知道就自己去查找吧,在此只列出如何使用for命令截取出我们需要的IP地址“9”的信息。for /f delims=: tokens=2 %i in (1.txt) do echo %i2.txt该语句是实现以冒号为行分割,然后取分割后的第二部分,最后保存在2.txt中。这样我们就成功提取出了IP地址(当然我给的IP地址只是我的电脑上的,你要得到的是无论在哪一台电脑上都能获得它的IP地址)最后就是从2.txt中把IP地址取出来赋值给变量了,这个批处理也有特定的处理,在此只介绍最简单的一种:set /p a=ipinformation.txtfind IPv4 1.txtfor /f delims=: tokens=2 %i in (1.txt) do echo %i2.txtset /p a=3.txtstart 3.txt其中加上一句ping %a% 3.txt只是IP地址的一个简单应用,就是查看IP地址是否可用的。如果你嫌生成了那么多文本文件太麻烦,你大可以只用一个文本文件记录需要的信息,不过初期学习还是一步一步来,不然出问题时要调试的话就很麻烦了,因为相同的文本在后续处理时是会被覆盖的。当然了以上程序还是有漏洞的,因为ip地址有局域网和无线网等等之分,你看你所需要的是什么ip地址,然后根据常识用find命令找到关键词,这才是根本。批处理学起来是非常乏味的,尤其是不喜欢编程的朋友,没有耐心又没有约束你是学不好的,刚开始我一看到几十页的批处理文档头都发麻,后来慢慢理解了作者的思想后,又觉得他说的太不详细了,应该还要再加点什么内容才能表达的更清楚才对,这就是到了尽信书不如无书的境界,所以我们要大胆怀疑,就算怀疑到最后是你错了,你也要怀疑,因为怀疑说明你有自己的想法了,不是生搬硬套了,不过一定要在确认自己理解了别人的时候怀疑。相信每个人都听过当局者迷旁观者清这句话,e哥再送你一句,虽然是山寨版的,但希望你用起来得心应手就行-谋事在人,成事在天,以旁观者的眼光来审视你所做的事情,退一步海阔天空。4. 批处理获得SMBIOS的信息在写之前我们首先要明白SMBIOS是什么,它实际上是笔记本电脑在开机启动的时候,从BIOS装入内存的一些有关BIOS版本,生产厂家等的基本信息。在windows下我们可以通过debug这个工具进行获取,当然聪明的人大有人在,我们也可以用RW这个软件很方便的查看,RW这个东西有点麻雀虽小五脏俱全的味道,因为它虽然只有两兆左右的大小,却能看到PCI,EC,SMBIOS,SMBUS,ACPI,USB等很多的信息,这些信息对一个懂电脑的人来说非常的有用。很多issue的产生都可以从这些信息中看到异常,当然需要你对厂家的spec非常熟悉才行。所以能够写出RW这个程序的人,实在是太了不起了,本人非常佩服。我们也可以专门写程序在dos下查看SMBIOS信息,这个基本上每个做BIOS的都会,也就是说获得SMBIOS实在有很多的途径,我们在此的方法只是在已知的方法下用批处理来处理而已。我们先来简单介绍一下windows下如何用debug查看SMBIOS信息,执行命令下输入debug后回车-s f000:0 ffff _SM_ 利用刚刚得到的地址(例如:F000:e120)在下一行提示符下键入-d F000:e120在第二行短划线处有寄存器eax四个字节的内容,如我的是20 7a 0e 00,那么ax的内容便是7a20,便是我们叩见SMBIOS需要的偏移地址,eax高两位的值000e需要左循环移四位得到我们需要的段地址,即e000就是我们需要查找的段地址,至于为什么要这么移动,我也不知道,只是相关的spec是这么规定的,我想既然这么规定一定有它的道理,只是我不知道吧罢了。这样再使用一次d命令,即-d e000:7a20便可得到相关的SMBIOS信息,不过如果你不懂什么是SMBIOS的话,你还是看不懂的,哈哈。上面的步骤其实很简单,e哥写这个批处理也纯粹是为了练习一下如何将以上问题批处理化。感兴趣的朋友可以研究研究,如果有问题的欢迎提出来。首先呢如何使用debug这个命令是个难题,e哥才疏学浅,查了很久的资料,结果大都是说debug的一些常用命令的,关于批处理中debug的介绍实在是微乎其微,索性还是有那么一些热心的朋友把它贡献了出来,那就是debug.exe a.txt,意思就是从文件中获得命令执行完后保存到a.txt中,有点和find命令相似,不过这个刚开始我使用的时候效果不是很好,因为我是先把需要输入的debug后续命令保存在一个文档中(txt或者dat文档),然后写批处理用debug直接调用,结果不管用,或者进行到断点后就停下来,反正就像段誉的六脉神剑一样时灵时不灵的,很恼人,后来我看到有人写程式时直接在批处理中生成文档并把后续命令输入文档中再调用,这样果然有了效果,debug终于可以一路春风得意的运行到终点,真是有种吐出卡在喉咙中的鱼刺的那种酣畅淋漓的舒服感觉。说道“终于”一词我想起了大一时候校报的一篇文章,报道的是我校某院的一个教授病逝的消息,里面有一句话是XX教授积劳成疾,终于在XX时间离开了人世。这个故事一时被校友传为笑柄,好像是对于教授的死有种大快人心的感觉一样,哎,可怜的教授“终于”可以含“笑”九泉了。我把整个批处理贴出来,然后简单解释一下,以下是保存为smbios.bat的批处理内容:echo offecho s f000:0 ffff_SM_ a.txtecho Qa.txtdebug.exe b.txtfind F000 c.txtset /p c=d.txtset /p d=d.txtecho qd.txtdebug.exe e.txtfind _DMI_ f.txtfor /f delims=- tokens=2 %i in (f.txt) do echo %i g.txtfor /f tokens=1-4 %i in (g.txt) do set i=%i&set j=%j&set k=%k&set l=%lecho %i%echo %j%echo %k%echo %l%set k1=%k:0,1%set k2=%k:1,1%echo %k1%echo %k2%set ds=%k2%l%k1%echo %ds%set vs=%j%i%echo %vs%set signal=:set address=%ds%signal%vs%echo %address%set m=d set command=%m%address%echo %command% h.txtecho dh.txtecho dh.txtecho qh.txtdebug.exe smbios.txtstart smbios.txt上面的批处理执行后会生成一个smbios的txt文档并自动打开,如果装有UE程序的可能需要你转换为dos格式打开,不过总之都是能打开的,如果你要的有关type信息没有显示,你还可以在h.txt中多加一些d命令来继续显示,当然我们最终得到的是显示在文本文件里的一堆16进制数字和后面的ASCII值,要想看到smbios的精华还需要你对spec有一定的熟练程度了。大家理解后完全可以简化以上批处理的内容,因为有很多语句只是我为了便于验证和调试加上去的,包括中间生成的那么多txt文档都是用来过度的,如果你理解了可以试着简化,把那些文本文档即用即删。整篇文档估计能认真读完的人不是很多,很多人一看见那么多自己从来没见过的或者没用过的东西,本能上有一种恐惧感,比如从你家到外婆家,你已经很熟悉有一条路可以过去,现在有人说走另一条路也可以到,而且很近,但前提是你一个人走,那么你会选择哪一条路呢?大部分人还是选择自己熟悉的那条
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宪法竞赛试题及答案
- 物理预赛试题及答案
- 湖北省云学联盟2024-2025学年高一下学期5月月考数学试卷(含答案)
- 2025年中考语文第一次模拟卷(无答案)
- 2025标准版长期劳动合同样本
- 2025风力发电站EPC总承包合同
- 完善工程设计企业的项目管理流程
- 智慧园区数据资产应用拓展及价值提升
- Leucomycin-U-生命科学试剂-MCE
- Deltamethrin-d6-Decamethrin-d-sub-6-sub-生命科学试剂-MCE
- 会计领军考试题库及答案
- 会计领军人才试题及答案
- (广东省卷)2025年中考考前最后一卷生物试卷(含答案)
- 多校下学期期中考试八年级语文试卷(PDF版含答案)-1
- 五下语文第五单元测试卷及答案
- 四川省石室中学2024-2025学年高二数学第二学期期末调研试题含解析
- DB32/T 3940-2020公路桥梁健康监测系统数据库架构设计规范
- 5.1基因突变和基因重组课件-高一下学期生物人教版必修2
- 2025年计算机Photoshop图像编辑试题及答案
- 2025年教师职业道德与法规考试试题及答案
- 2025年江西省赣州市八年级中考模拟预测生物试题
评论
0/150
提交评论