1 / 4
文档名称:

批处理变量延时.doc

格式:doc   大小:23KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

批处理变量延时.doc

上传人:kt544455 2020/1/18 文件大小:23 KB

下载得到文件列表

批处理变量延时.doc

文档介绍

文档介绍:例1:***@echooff&setlocalEnableDelayedExpansionfor/f"tokens=*delims="%%iin("Helloworld.")do(setn=%%isetn=!n:ld.=t!setn=!n:ow=S!setn=!n:He=Wi!echo!n!)“WillSort”字符串,下面将讲解每个语句的意思:1.***@echooff&setlocalEnableDelayedExpansion关闭命令回显,"tokens=*delims="%%iin("Helloworld.")do(for命令及其参数的使用,请大家在论坛里搜索相关字眼。限于篇幅问题,这里不作讨论。如果此时你不明白它的意思,那么你就当它的作用是把字符串“Helloworld.”赋值给%%i好了,当然这只是权宜之计,以后一定要学****for的使用!=%%i把%%i的值(即Helloworld.)赋予给变量n,=!n:ld.=t!这里要讲讲set替换字符的功能了。这个语句的意思是,先获取变量n的值(此时n的值是“Helloworld.”),然后将字符“t”替换字符“ld.”,然后再将替换后的结果再次赋值给变量n(此时n的值变为“Hellowort”)。至于set替换字符的编写格式,大家可以在CMD键入“set/?”找到“%PATH:str1=str2%”=!n:ow=S!意思和上句一样,只是替换和被替换的内容不同。它是将“S”替换“ow”(注意S前面和w前面都有个空格),其实willsort老大是想证明set替换字符是支持句点和空格的(第4句“ld”后面有个.)。此时n的值为“HellSort”=!n:He=Wi!这句不用说了吧,执行完这句后n的值为“WillSort”!n!显示变量n的值需要注意的是,一旦启用了变量延迟,就要用!号把变量括起来,而不能用%号。好了,每句的意思已经说完了,下面要讲本帖真正要讨论的变量延迟的问题。这里又要引用WillSort老大的说明:当CMD读取for语句时,其后用一对圆括号闭合的所有语句将一同读取,并完成必要的预处理工作,这其中就包括环境变量的扩展,所以在for中的所有语句执行之前,所有的环境变量都已经被替换为for之前所设定的值,从而成为一个字符串常量,而不再是变量。而为了能够在for语句内部感知环境变量的动态变化,CMD设计了延迟的环境变量扩展特性,也就是说,当CMD读取了一条完整的语句之后,它不会立即执行变量的扩展行为,而会在某个单条语句执行之前再进行扩展,也就是说,这个扩展行为被“延迟”了。总的来说是,在没有启用变量延迟的情况下,凡是在括号内(即do里面)的变量,在执行for语句之前,就已经被替换成for语句之前其它命令对该变量所赋予的值。这句话不懂没关系,下面再看一个例子,看完你就会明白。例2:***@echoofffor/f"tokens=*delims="%%iin("Helloworld.")do(setn=%%isetn=%n:ld.=t%setn=%n:ow=S%setn=%n:He=Wi%echo%n%)pause这和前面的例子差不多,只是所有!号都换成