1、bat/cmd批处理程序谣计教程、彳 是一篇技术教程,我真心诚意会用很简单的文官袤达清楚自己的意思,只要你也咨就 健看懂,就健皆到知混 我写这篇教程的目的,是让每一个看过这些文言的朋友记住 一句祜:如果爱可“线上事情变的更简单,那么就让它简单吧!看这篇教程的方法,就 是慢!慢慢的,也同品一#茗茶,你会发现很多前就在眼前的东曲突终度的很遥远,而嘀些 很遥远的东曲却又突然回到了眼前。先概述一下批处理是个什么东东。批处理的定义,至今我也谩铺给出一个合适的一众多 高手们地嘟祓给出一反正我不知还一一看了我也不一定信服-一我是个菜鸟,当然就更不用 说了;但我想总错比一个号嗑合适豺,而且我也相信商己可以把它
2、解祥的很清楚,让更多的 菜鸟都知道这是个什么东东,你用这个东东可以干什么事慵。或裨你会因为这篇文章而”无条 件爱上批处理,那么我的目的就到达了一一我就是要让你爱上它,我就这么拽,你舔怎么 着?真的,爱密时候就这么拽,就是这么没理由,就是这么不要脸!真的!接改我的理解,批处理的本质,是一燧DOS命令按一定顺潺排列而彩成的集合。批处理文 件是无格式的文本文件,它包含一条或多条命公。它的文件扩展名为.bat或 do在命令 提示下键入批处理文件的名存,或渚务去孩批处理文件,系铉就会调用Cmd.exe按簸该文件 中各个命令出现的顺序来逐个运行它们。使用松t理文件(也被称为批处理程涛或脚本),可 以简化日
3、常或潼复性佞务。咨线我们的这个股本的金要向客是介裕批处理在入侵中一些实际运 用,制如我们后面要提到的用批处理文件来给系铳打补丁、批量擅人后门程序事OK,never claver and get to business (闲话歹说言归正传)。批处理,也称为批处理 脚本,英文祥为BATCH ,批处理文件后辍BAT就取的前三个室母,它的萄或谀密固定格式, 只要遵守,4下这条就。k 了 :每一行可视名一个命令,每个命令里可以含多条各命令,从第一 行升的执行,直到最后一行秸束,它运行的平台是DOS。批处理密一个很鲜嬲的特点:使用 方便、灵活,劝能强大,商劲化程度嬴 我不想让自己写的教程拈嫖无%因为牵蚀到
4、代码(批123410、start 命令批处理中调用外部程序的命令(该外部程序在新窗口中运行,批处理程序徒模往下执行,系理会外部程 序的运行状况),也累直接运行外部程序那么必须等外部程序完成后才徒猿执行剩下的指令例:start explorer d:倜用资源管理器并打杆D盘11、assoc 和 ftype文件关联assoc以盘文件扩展名关联,关联豺文件类型, ftype被翌文件类型关联,关联对执行程存和参数当你双击一个txt文件时,windows并系是根据.txt直接判断用notepad.exe打歼而是先判断.txt属孑txtfile,文件类型,再调用 txtfile 关联的命令行 txtfiI
5、e = %SystemRoot%system32NOTEPAD.EXE %1可自在文件夹选项”一 文件类型”里修改这2种关联assoc#显示所前文件犷展名关联assoc .txt #显示.txt代表的文件类型,彳吉果显示.txt=txtfileassoc .doc#显示.doc代袤的文件类型,,秸果显示.doc = Word.Document.8assoc .exe #显示6乂代表的文件类型,夕吉果显示.exe = exefileftype#显示所有文件类型关朕ftype exefile #显示exefile类型关联的命令行,秸累显示exefile = %l %* assoc .txt = W
6、ord.Document.8祓置.txt为word类型的文档,可”!看到.txt文件的囹标都啜了assoc .txt = txtfile恢复.txt的正褊关联ftype exefile = %1 %*恢复exefile的正瑞关朕购票该关联已径被破坏,可运行command ,再输入送条命令12、pushd 和 popdecho offc: & cd & md mp3 md d:mp4cd /d d:mp4 pushd c:mp3 popdecho offc: & cd & md mp3 md d:mp4cd /d d:mp4 pushd c:mp3 popd切换咳前目录#在C:建立mp3文件夹#
7、在D:建立mp4文件夹#更改当前目录与d:mp4#保存当前目录,并切换当前目录为c:mp3#恢复当前目录的刚才保存的d:mp4一般用处系大,在当前目录名曲角定时,会南电帮助。(dos编程中很痢用)13、 CALLCALL命令可,4在批处理执行过程中调用另一个批处理,咨另一个批处理执行完后,再徒搂执行原来的枇 处理CALL command调用一条批处理命令,知直接执行命令数累一样,特殊情况下很菊用,比也度量的多敏嵌套,见教程后 面。在批处理编程中,可根据一定条件由成命令容符串,用call可“(执行该令符串,见例各。CALL drive:pathfilename batch-parameters调
8、用的其它批处理程序。filename参数必须具南.bat或 d犷晨名。CALL :label arguments调用本文件的命令段,相当孑各程序。被调用的命令段标签:1abeI界头“命令goto :eof?吉尾。另外,批脚奉文走参数参照(0、1、等等)已也下改嗖:批脚布里的*指出所南的参数(也%1 %2 %3 %4 %5 .)批参薮(n)的替代已被增强。您可“使用”1下话孩:(看不阚白的直接运行后面的例3)%1-蒯除引号(I ,犷羌%1%fl-将%1扩充到一个免金合格的路径名%dl-仅将%1 先到一个驱动器号%pl-仅将%1扩充到一个路径%nl-仅将%1扩充到一个文件名%xl-仅将%1扩充到一
9、个文件扩展名%sl-扩充的路径指含点短名%al-将%1犷丸到文件属性%tl-将%1 先到文件的日期/时间%zl-将%1扩充到文件的大小%$PATH : 1 -查找列在PATH环境嗖量的目录,并将%1扩充到找到的第一个完金合格的名称。曲果环境变量名未被定义,或者没南找到文件,此殂合键会犷先到安存符串可殂合修定符来取得多重秸累%dplR将%1犷晨到驱动器号和路径%nxl-只将%1犷展到文件名和犷晨名%dp$PATH:l -在列在PATH妹境变量中的目录里查找1 ,并扩展到找到的第一个文件的驱动器号和路径。%ftzal 将1 扩展到类似DIR 的输出行。-在上面蜀创台中,1和PATH可被其他前教数值
10、替携%诒法被一个南数参数号码给止。修定符示锚限*使用演意:参数犷充时不理会参数所代表的文件是否真实存在,场咳前目录进行犷展要理解上面的知祖,下面的向各很关键。例:echo offEcho 产生一个总时文件 tmp.txtRem下行先保存当前目录,再将c:windows被为当葡目录pushd c:windowsCall :sub tmp.txtRem下行恢复前次的当前目录PopdCall :sub tmp.txt pause Del tmp.txt exit :subEcho删除引号:%1Echo扩充到路径:flEcho充到一个驱动器号:dlEcho扩充到一个路径:%plEcho扩充到一个文件名
11、:nlEcho扩充到一个文件扩展名:%xlEcho扩充的路径指含前短名:s 1Echo扩充到文件属性:%-alEcho扩充到文件的日期/时间:%tlEcho充到文件的大小:%zlEcho展到驱动器号和路径:%-dplEcho展到文件名和犷晨名:nxlEcho扩展到类似DIR的输出行:ftzal Echo.Goto :eofset aa = 123456set cmdstr = echo %aa% call %cmdstr%pause4例中电累米用call ,而直接运行cmdstr% ,将显示彳吉果aa% ,而不是123456 14、shift更改枇处理文件中可替换参数的位置。SHIFT /n也
12、累命令屋名被启用,SHIFT命令支特/n命令行fl关;该命令行并关告诉 命令从第n个参数外胎移位;n介孑零和八之间。例姒SHIFT /2会将%3移位到2 ,将4移便到%3 ,等等;并且不影响%0和%lo 15、IFIF条件判断话句,话核格式也下:IF NOT ERRORLEVEL number commandIF NOT stringl = = string2 command IF NOT EXIST filename command下面逐一介馅,更皆知的分折请看后面章节。(1) IF NOT ERRORLEVEL number commandIF ERRORLEVEL这个句各必须放在某一个命
13、令的后面,执行命令后由IF ERRORLEVEL来判断命令的逡 回值。Number的数字取值勉渤0255 ,判断时值的挪列顺序应该由人到小。逡回的值大孑等孑指定的值时, 条件成立向:echo offdir c:rem退出代码与二1就魏至标题1处执行,=0就魏至标题0处执行IF ERRORLEVEL 1 goto 1IF ERRORLEVEL 0 goto 0Rem上面的曲行不可委换位置,否那么失败了也显示成功。:0echo命令执行成功!Rem程序执行完毕眺至标题exit处退出goto exit:1echo命令执行失败!Rem程序执行完毕觎至标题exit处退出goto exit:exitpaus
14、e运行显示:命令执行成功!(2) IF NOT stringl = = string2 commandstringl和string2都各字符的数据,英文肉室符的大小与将看作木同,这个条件中的等孑号於须是两个 (葩对相等的意思)条件相等后即执行后面的command检测当前嗖量的值做出判断,合了防止李石串中含前空格,可用下格式if NOT stringl = = string2 commandif NOT stringl = = string2 commandif NOT stringl = = string2 command逐种写垓实际上将括号或引号咨或令符串的一部含了二R要等号左右曲边一致就行
15、了 :比也下面酝汇 就不行:if stringl = = string2 commandIF NOT EXIST filename commandEXIST filename卷文件或目录存在的意思echo offIF EXIST autoexec.bat echo 文件存在!IF not EXIST autoexec.bat echo 文件不存在!这个枇处理大家可放在C盘和D盘分别执行,看看数票16、setlocal与嗖量延迟车条内容引用英福出品的批处理教程:要想进阶,变量延迟是必过的一关!斩4这一割舍希鳖你线认真看。为了更弁的说明问题,我们先引入一个制多。例1:echo offset a =
16、 4set a = 5 & echo %a%pause彳吉票;4解也:必什么是4石不是5呢?在echo之前明明已羟把瘦量a的值改成5 了?让我们免了解一下批处理运行命令的机制:批处理读取命令时是按行读取的(另外例由for命令等,其后用一对圆括号闭合的所语语句也咨作一行), 在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的度量饿债。我们现在今折一下例1, 批处理在运行到这旬“set a = 5 & echo %a%”之前,先把这一句整甸犊取并做了预处理一对嗖量a喊了 值,那么a%劣线就是4 了 !(没痛扮什么,枇处理就是这样做的。)而君了健够感知环境嗖量的动态嗖化,批处理祓计了要量延
17、迟。简单来说,在犊取了一条完整的话句之 后,不立即对该行的嗖量喊饱,而会在某个单条语句执行之前再进行戚值,也就是说,延迟”了对嗖量的 底卷那么如何丹启度量延迟呢?度量延迟又需要演意什么呢?举个例孑说明一下:向2:echo offsetlocal enabledelayedexpansionset a = 4set a = 5 & echo !a!pause秸累:5解说:启动了嗖量延迟,得到了正石角答案。嗖量延迟的启动语句是“setlocal enabledelayedexpansion”, 并且变量要用一对叹号“!”括起来(演意要用英文的叹号),否那么就谀痢暧量延迟的放票。舍折一下俐2 ,首先
18、setlocal enabledelayedexpansion”开启嗖量延迟,然后set a = 4”先给嗖量a贼 布.各4 , “set a = 5 & echo 4!”这句是给嗖量a赋值君5并输出(由孑启动了嗖量延迟,斩八枇处理然够感知 到动态嗖化,即不是先给该行嗖量赋值,布是在运行过程中给嗖量媵值,因此此时a的值就是5 了)。 再举一个例各巩固一下。例3:echo offsetlocal enabledelayedexpansionfor /I %i in (1,1,5) do (set a = %iecho !a!) pause 彳吉票:12345解说:奉召府启了变量延迟并用“!”将嗖
19、量扩铤来,因此得到我们预期的假设果。电果系用变量延迟会出现 什么浩累呢?秸累是这样的:ECHO处孑关闭状态。ECHO处孑关闭状态。ECHO处孑关闭状态。ECHO处孑关闭状态。ECHO处孑关闭状态。即流菊感知到for语句中的动态度化。提示:在没为并启变量延迟的情况下,某条命令行中的变量改变,必须到下一条命令才健表达。这一立 也可总加利用,着俐3。例:委换祗;个嗖量的值,且不用中间嗖量echo off:目的:麦换的个度量的值,但是系使用总时度量:Code by 懒得勤快 2014-10-31 email = CMDcmdCMDcmd/email set varl = abcset var2 = 1
20、23echo 委换前:varl = %varl% var2 = %var2%set varl = %var2%& set var2 = %varl%echo 委换后:varl = %varl% var2 = %var2% pause17、ATTRIB显示或更改文件属性ATTRIB +R|-R + A|-A + S|-S +H|-H drive: path filename /S /D+设置属性。-清除属性。R 只犊文件属性。A 存档文件属性。S系胡文件属怪。H 隐藏文件属性。drive: path filename 指定要处理的文件属性。/S处理当前文件夹及其各文件夹中的匹配文件。/D也处理文
21、件夹。WTmd autorunattrib +a +s +h autorun上面的命令将建立文件夹autorun,然后将其微各右档、系位 隐藏属性第二节常用特殊符号1、命令行回显屏蔽符2、%批处理度量引导存3、 重定向符4、重定向符5、&、&重定向符6、|命令管道符7、入转义字符8、&殂合命令9、&殂合命令10、|徂合命令11、”.合符串界定符12、,逗号13、;令号14.()括号15、!或叹号16、批处理中可健会见到的其它特殊标祀符:(略)CR(OD)命令行拮束符Escape(lB) ANSI转义皆符孑|导符Space(20)常用的参数界定符Tab(09);=不常用的参数界定符+ COPY命
22、令文件遂接符* ?文件通配符/参数升关引导符:批处理标签引导符1、命令行回显屏蔽符这个合符在批处理中的意思是关闭当前行的回Mo我们从前几裸知道ECHO OFF可“关闭掉整个批处理命令的回显,但示僚关掉ECHO OFF这个命令,现在我们在ECHO OFF 这个命令前加个 ,就可U到达所嗡命令均不回显的要求 2、%批处理嗖量引导符这个石刍、号严格来说是篱系上命令的,它只是批处理中的参数而已(多个一铤使用的情况除外,后还 将祥知介馅)O引用变量闲var% ,调用程序外部参数用1至9等等%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*君命令行径递给批处理的参数%0批处理文件奉身,包括完
23、整的路径和广展名%1第一个参数%9第九个参数%*从第一个参数弃胎的所前参数参薮0县南特殊的功矮,可调用批处理自身,八到达批处理本身循环的目的,也可总复制爻件自身等 等。例:最简单的复制文件自身的方法copy %0 d:wind.bat小技巧:添加行为短群%潼释内容(可用作行内短释,不健出现重定向符号和管道符号)与什么这样呢?此时,渔群内容”其实被当作嗖量,其他是安的,故R铤运群作用,不过这种用法容易出 观诒孩错误,一般乐用。3、重定向苻输出重定向命令这个密符的意思是佬递并且覆盖,他所铤的作用是将运行的假设果径递到后面的范围(后边可以是文件, 也可是默认的系貌控制台)在NT系列命令行中,重定向的
24、作用勉匐由整个命令行转变为单个命令语句,受到了命令分隔符&, & &, 11和话句块的制箱限制。比也 :使用命令:echo hello l.txt将建立文件l.txt ,由容矽hello (拄意行尾南一安格)使用命令:echo hellol.txt将建立文件l.txt ,内容为”hello“(海意行尾没痢空格)4、重定向符输出重定向命令这个符号的作用和南点类似,但他们的区别是是佬递群在文件的末尾追加,而是覆盖用我同上同存拿l.txt做俐各使用命令:echo hello l.txtecho world l.txt这时候l.txt内容也下:helloworld5、&、&重定向符这三个命令也是管道命
25、令,但它们一般不常用,你R需要知道一下就。k 了,当然如果想仔细研究的话, 可自己查一下资料。(4人已查过,网上也查木到桐美资料),输入重定向命令,从文件中犊入命令输入,而不是从键盘中犊入。echo offecho 2005-05-01temp.txtdate temp.txtdel temp.txt这样就可,,!乐等待揄人直接修改当前日期& ,将一个句柄的输出写入到另一个句柄的输入中。nul袤示禁止输出正确的信息2nul袤示桀止输出错候信息。其中的1与2都是代表票个数据浇谕入输出的地址(NT CMD称之/句柄,MSDOS称之右超备)。句柄0 :标箍输入stdin ,键盘输入句柄1 :标球输出
26、stdout ,输出到命令提示符窗口( console ,代码扮CON )句柄2 :标准错俣stderr ,输出到命令提示符窗口 ( console ,代码扮CON )其中的stdin可被量定向,stdout可被、重定向。我们已径知道犊取文布中的内容可用for命令,但也累只需要读取第一行用for命令就痢点麻烦。简单 的方法由下:echo offset /p str= l.txt秸累那么是:test l.txt他没痢追加在l.txt里,呵呵。只是显示了出来另外,此转义容符述可U用作绘行符号。举个简单的向3:echo offecho英雄人是八 扭 男人pause示用多说,自己试一下就明白了。治什么
27、造义咨符放在行尾可鸵到掾行符的作用呢?原包很简单,包为每行走尾迷有一个看不见的符号, 即回车符,造义令符便孑行星时就让回车符夫被了,从而空到了搂行的作用。8、&徂合命令造法:第一条命令&第二条命令&第三条命令&、&、|阂徂合命令,颜名思义,就是可U把多个命令徂合铤来咨一个命令来执行。这在批处理脚布 里是允许的,而且用的独常广泛。国必批处理认行不认命令数队这个符号允许在一行中使用2个上不同的命令,当第一个命令执行失败了,也示影响后边的命令执行。 这里&曲边的命令是顺序执行的,从前祖后执行。比也:dir z: & dir y: & dir c:上命令会连猿品示z,y,c盘的内容,不理会该盘是否志在
28、9、&徂合命令诺造:第一条命令&第二条命令&第三条命令用这种方法可“响时执行多条命令,当磁到执行出错的命令后将不执行后面的命令,如果一直没前出错 那么一直找行完所南命令这个命令知上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行 dir z: & dir y: & dir c: 10、II徂合命令话该:第一条命令II第二条命令|第三条命令用这种方法可同时执行多条命令,当一条命令失败后才执行第二条命令,当磁到执行正熊的命令后将 示执行后面的命令,如果没南出现正确的命令那么一直机行完所密命令;提示:徂合命令知重定向命令一空使用必须演意优先敏管道命令的优先级高孑重定向命令,重定向命令的优先
29、被高孑组合命令问题:把C盘和D盘的文件和文件夹列出到a.txt文件中。看制:dir c: & dir d: a.txt这样执行后a.txt里尺南D盘的信息!的什么?国君殂合命令的优先敏谀南重定向命令的优先敏高!所U 这句在执行时将奉行刍、成这斯部刍、:dir c:和dir d: a.txt ,而舁木是由你想的这曲都令:dir c: & dir &和 a.txto要使用很合命今&到达题目的要掂,於须得这么写:dir c: a.txt & dir d: a.txt送糅,俵据优先级高低,DOS将杷这句话分成下两部令:dir c: a.txt知dir d: a.txt你十八 中的几句的差异比按特殊,值
30、得好焰商究体会一下。当然这里迷可利用&命令(自己想一下道理哦):dir c: a.txt & dir d: a.txt这个也可用dir c:;d: a.txt来实现I11,有符串界定符双引号允许在室符串中包含安格,进入一个特殊目录可“用也下方接处理的内容其是代码吧?)的问题本来就是拈燥的,很歹由人健面对满屏幕的代码而静下心来, 所以我会用很多简单实用的制各让揍这篇教程的朋友去体会批处理的那四射的魅力,感受 它那假设灵篇怪的性格,格知不觉中爱上批处翘晕,怎么又是爱?到底批处理和爱嘀什么关系? 答案:没嘀! ) o再说句“闲话,:要号略批处理,DOS基础一定要牢!咨慈脑各灵活也是很 重要的一方面。
31、俐一、先给出一个最easy的批处理脚本让大家和它混个脸教,将下面的几行命令保存必 name.bat然后执行(后文中只给出代码,保存和执希$式类似):ping a.txt ping a.txt ping a.txt ping a.txt ping a.txt ping a.txt ping a.txt ping a.txt exit是不是都健看的懂?是不是很easy?但它的作用却是很实用的,执行这个批处理启,可以 在你的劣前盘建立一个名为a.txt的文件,它里面祀录的信息可,a帮助你迅速找到速度最快的 QQ服务器,从而远离”从服务器中您那一痛苦的过程。这里的意思,是把前面命令得到的 东曲放到后面
32、所给的地方, 的作用,和的相同,区别是把船累追加到前一行得出的秸累的 后面,具体徜说是下一行,而前面一行命名得出的转果将保存,这样可“更这个a.txt文件越 来越上(想到如何搞破坏了?)。By the way ,这个批处理逐可。和其他命令精合,搞成 免金自幼化判断服务器速度的东东,执行后直接显示速度最快的服务器IP ,是不是很爽?后面 逐梅洛田介修俐工再给出一个已住过时的倒各(a.bat ):echo offif exist C:Progra-lTencentAD*.gif del C:ProgralTencentADV.gif为什么说这是个逑时的倒等呢?很简单,国曷现在已羟几乎谩嘀人用药广告
33、的QQ 了,所cd program filescd progra-lcd pro*U上三种方孩都可U进入program files这个目录12、,逗号逗号拘医孑空梏,在某些情况下“,”可“用来当做空格使比胫?dir,c:13、; 行号行号,当命令相同时,可将示同目标用;来隔离,但执行数票示嗖,电执行过程中发生错畏,那么只遨 回错俣报告,但程序仍会执行。(南人说乐会徒横也行,其实测试一下就知道了)比也:dir c:;d:;e:;z:上命令相当孑dir c:dir d:dir e:dir f:也累其中z盘未存在,运行显示:系乡找不到指定的缁径。然后终止命令的执行。例:dir c:;d:;e:l.t
34、xt上命令相当孑dir c:dir d:dir e:l.txt其中文件e:l.txt不存在,但e盘存在,南错族提示,但命令仍会执行。与什么?也累目标路径不存在,那么多止执行;也累路径存在,仅文件不存在,那么徒倭执行。就说这些了!各位嘀什么意见稿回贴!嗡什么疑问请到BAT奏流区或贴!下一节改进!14、()括号小括号在批处理褊程中市特殊的作用,左右括号必须成对使用,括号中可包括多行命令,这些命令将 被看成一个整体,视与一条命令行。括号在for语句和if诒句中常见,用来嵌套使用循环或条件语句,其实括号()也可单独使用,谛看h ec威 o -厂 k 辞:令A 例例命可h ec威 o -厂 k 辞:令A
35、 例例命可3 o h ec & 2 o h c e & 1echo 1 echo 2 echo 3 )上面四种与在数果一样,这两种与法都被观扮是一条命令行。短意:这种多条命令破观为一条命令行时,心果其中假设变量,就涉及到变量延迟的问题。15、!感叹号没啥说的,在变量延迟问题中,用来袤示或量,EP%var%应该袤示粉var!,请看前面的setlocal命令介 馅。第二量DOS糖环。or命令译解讲FOR之前呢先告诉各位新手朋支也累你假设什么命令不怪直接在CM D下面输入name /?这彳笨的格式来看系彳克给出的帮助文件比也for /?就会把FOR命令的帮助金都显示出来!劣然 许多莱鸟都看不怪所才会
36、嗡那么多枇处理文章!俺也庭硕菜鸟,把FOR命令用我自己的方式说明下! 正式开桧一、基本格式FOR %variable IN (set) DO command com ma nd-para meters%variable指定一个单一密母表示可替换的参数。(set)指定一个或一殂文件。可使用通配符。command指定对每个文件执行的命令。com ma nd-para meters君特定命令指定参数或命令行畀关。参数FOR为4个参数/d /I /r /f他们的作用我在下面用制各就释现在月四耕每个参数的意思二、参数IdFOR /D %variable IN (set) DO command com m
37、a nd-para meters-累集中包含通配符,那么指定与目录名匹配,而不与文件名匹配。为累Set (也就是我上面写的相关文件或命令)包含通配符(*知?),将对与Set相匹配的每个 目录(而不是指定目录中的文件殂)执行指定的Commando这个参数g要用孑目录搜索,不会搜索文件看这样的俐多echo offfor /d %i in (c:*) do echo %ipause运行会把C盘根目录下的金都目录名字打印出来v而文件名庄一个也不显示!在来一个比由我们要把当前路径下文件夹的名咨旦前1-3个官母的打出来echo offfor /d %i in (?) do echo %ipause这样的话
38、也累你当前目录下南目录名皆只为1-3个室母的就会显示出来没南就示显示了这里解释下*号和?号的作用,*号表示低意N个容符,布?号只表示值意一个室符知道作用了,给大家个思考题目!echo offfor /d %i in (window?) do echo %ipause保存到C盘下执行;会显示什么呢?自己看吧 显示:windows/D参数只滋显示当前目录下的目录名名这个大家要捶意!三、参数IRFOR /R drive:path %variable IN (set) DO command command-parameters检查drive:path各根的目录树,指向每个目录中的FOR语句。电票在/R
39、后没痛指定目录,那么使用方前目录。如果集仅为一个单点(.)字符,那么故举该目录树。递归上面我们知道/D只能显示图前缁径下的目录名冬那么现在这个/R也是和目录南关,他能干嘛呢?放心他 此/D强大多了!他可,4把咨前或者你指定路径下的文件名夺令都读取演意是文件名冢为什么用看俐岁请假意2点:l.set中的文件名曲票含前通配符(?或*),那么列举/R参数指定的目录及其下面的所用3目录中与set 桐符合的所密文件,无相符文件的目录那么系列举。2、相反,电票set中为具体文件名,系含通配府,那么枚举该目录树(即列举该目录笈其下面的所痢 写目录),而不管set中的指定文件是否存在。这与前面所说的单点(.)牧
40、奉目录树是一个道理,单直 代袤当前目录,也可视君一个文件。向:echo offfor /r c: %i in (*.exe) do echo %ipause咱们把这个BAT保存到D盘随便哪里然后执行我会就会看到,他把C盘根目录,和每个目录的各目录下面 金部的EXE文件都列出来了!! 例:echo offfor /r %i in (*.exe) do echo %ipause参数不一样了。巴这个命令前面段加那个C:也就是搜索路径这梆他就会当前目录治搜索路径比为你 这个BAT你把他放在d:test目录下执行,那么他就会把D:test目录和他下面的各目录的金部EXE文件 列出来!! 向:echo o
41、fffor /r c: %i in (boot.ini) do echo %ipause运行为0恼规收举了 c盘所南目录,合了总列率boot.ini志在的目录,可改成下面这样:echo offfor /r c: %i in (boot.ini) do if exist %i echo %ipause用这条命令搜索文件真木错。这个参数大家应该理解了。巴迷是满好就的命令四、参数/LFOR /L %variable IN (start,step,end) DO command com ma nd-para meters-该集表示“增量形式从畀心到转束的一个数咨件列。因此,(1,1,5)将产士序列1
42、2 3 4 5 , (5,-1,1)将产生序列(5 4 3 2 l)o使用迭代变量超置能的值(Start#),然后逐步执行一徂篦闱的彷,直到该值超过所孩置的终止值 (End#)。/L将通过对Start#与End#进行比按来执行迭代或量。也果Start#小孑End# ,就会执 行该命令。的果迭代嗖量差过End# ,那么命令解释程序退出此循环。近可使用负的Step# 递减数值 的方式逐步执行此范囹内的值。制电,(1,L5)皮或序列1 2 3 4 5 ,而(5,-1,1)那么由成序列(5 4 3 2 1)o 裙孩是:看着这说明痢点晕吧啕们看俐各就不晕了!echo offfor /I %i in (1
43、,1,5) do echo %ipause保密执行看我系他会打印从1 2 3 4 5这样5个数令(1,1,5)这个参数也就是袤示从1升四每次加1直到5帑止!等会景就打印个数室布P用恪的漏足大冢着这个俐各echo offfor /I %i in (1,1,5) do start cmdpause执行后是示是吓了一陇怎么多了 5个CMD窗口呵呵!曲果把那个(1,1,5)改成(1,1,65535)会前什么夕吉 祟我先告诉大冢会翻开65535个CMD窗口.这么多你不死机算你强!咨然我们也可代把那个start cmd改成md %i这样就会建立指定个目录了!名令君1-65535看完这个祗我殿孑破坏性质的参
44、数后,我们来看最后一个参数五、参数/F,迭代及文件解折使用文件解析来处理命令输出、室符串及文件向软 使用迭代变量定义要检查的内容或咨符串,并使用 各种options选项进一步修改解析方式。使用options令牌选项指定哪些金牌应该作为迭代瘦量传递。 谪拄意:在没南使用令牌选项时,/F将只检查第一个金牌。文件解析过程包括犊取输出、合符串或文件内容,将其刍、成独立的文寿行及再将每行解花成零个或更 多个令牌。然后通过役置为令牌的迭代变量值,调用for循球 默认情况下,/F传递每个文件每一行 的第一个安白令隔符号。魏过空行。皆细的帮助格式合:FOR /F options %variable IN (file-set) DO command com ma nd-para meters FOR /F options %variable IN (string) DO command com ma nd-para meters FOR /F options %variable IN (command) DO