|  | 
8#
 
 
 楼主|
发表于 2008-8-13 13:40:16
|
只看该作者 
| 在这里有于时间原因,先仅对1楼帖子作个简单的注释讲解,希望能对DOS爱好者有所帮助 @echo off复制代码@echo off
color fc
setlocal enabledelayedexpansion
set str=一二三四五 上山打老虎 老虎打不到 打到小松鼠 松鼠有几个 让我数一数  数来又数去 
五四三二一 一二三四五
for %%i in (%str%) do (
echo %%i&echo.&ping -n 2 127.1>nul
)
pause>nul
:: 注释 这句不用注释了吧,关闭CMD命令回显,@是不显示echo off本句,因为echo off并不能关闭
 
 自身.
 
 color fc
 :: 注释 这句是指定控制台输出的颜色属性,第一个F为背景色为亮白色,第二个C为前景色为淡红色
 
 setlocal enabledelayedexpansion
 :: 注释 这句是开启变量延迟,在本例中可以省略不用,不影响效果.
 
 set str=一二三四五 上山打老虎 老虎打不到 打到小松鼠 松鼠有几个 让我数一数  数来又数去
 
 五四三二一 一二三四五
 :: 注释 这句是把一二三四五 上山打老虎......这几45个字符串赋予str,注意中间有空格
 
 隔开的
 
 最麻烦是下面这句FOR,先要全局看一下,从FOR开始,到DO以后被圆括号括起来的,作为一个动作来处理
 
 ,我们可以理解为是一段话,只不过里面有多个语句组成的.为了便于大家理解,在这里把他整句分开几部分来讲.DO前IN后,FOR后, DO后,三个部分
 
 for %%i in (%str%) do (
 :: 注释 这句是从DO前IN 后圆括号读取变量%str%的值,前面我们已经赋予STR=一二三四五 上山打
 
 老虎......"45个字符串了,也就是说%str%就是这45个字符串"一二三四五 上山打
 
 虎......",因为中间用空格隔开了,所以就分先后读取,先读取第一个空格前的第一句,也就是"一二
 
 三四五"了,并传递给前面的FOR赋予%%i,到此时%%i变成了"一二三四五"再送给后面DO来执行.
 
 echo %%i&echo.&ping -n 2 127.1>nul
 )
 :: 注释 这句前面已经讲到FOR已经赋予%%i为"一二三四五"了,那么就是并ECHO出来,也就是并把%%i显示出来,那么ECHO执行
 
 结果就是在CMD窗口信息显示出"一二三四五"了,&echo.这句里&是一个组合命令符,显示前面结果之后,再执行&以后的命令,ECH
 
 O.就换行的意思,&ping -n 2 127.1>nul)这句里-n是PING的参数,请求发出的信息得到响应, 2为PING的次数,127.1就是12
 
 7.0.0.1的缩写法,PING本机,>nul 就是把PING出的结果重定向到一个空设备上,意思就是不要在CMD窗口显示.PING这一整句用到
 
 这里整句意思就是在前面显示%%i结果后,停留两秒钟的时间(一个大致时间),如果PING的次数为3,就是显示%%i,此时为"一
 
 二三四五"了,显示3秒钟的时间,后面还有一个反圆括号,到此时第一个循环结束,再第二次循环开始,读取%str%字符串第
 
 二部分即第一个空格右边部分到第二空格之间"上山打老虎"这五个字,传递给FOR赋予%%i,此时%%i就变为"上山打老虎"了,
 
 不再是"一二三四五"了,再送给DO来执行,ECHO显示出来停留2秒的时间,再开始第三次循环......直到读取最后一句也是"一二
 
 三四五",并不是第一句的"一二三四五",要区分开来,送给DO执行显示出来停留2秒时间到后面一个反括号,至此FOR整个递
 
 归循环过程结束,(反圆括号和前面的正圆括号是配合使用的不能缺少,否则批处理出错不能执行)继续执行最后反圆括号后面的命令
 
 pause>nul
 :: 注释 这句最简单,大家都知道pause是暂停的意思,用在句尾这里是让批处理执行完停留下来,让大家能够看得更加清楚,用>NUL就是不让请按任意键退出显示在窗口上,看起来让批处理执行窗口干净整齐一些.
 bbs.wuyou.net
 haiou327&YY写写
 2008年08月13日中午
 
 
 好了,就到这里吧,有错误纰漏之处请指正,希望能对DOS爱好者有所帮助!
 
 
 
 
 
 如再不清楚之处请移步
 无忧论坛CMD高级教程帖
 
 [ 本帖最后由 haiou327 于 2008-8-14 12:00 编辑 ]
 | 
 |