|
8#
楼主 |
发表于 2008-8-13 13:40:16
|
只看该作者
在这里有于时间原因,先仅对1楼帖子作个简单的注释讲解,希望能对DOS爱好者有所帮助- @echo off
- color fc
- setlocal enabledelayedexpansion
- set str=一二三四五 上山打老虎 老虎打不到 打到小松鼠 松鼠有几个 让我数一数 数来又数去
- 五四三二一 一二三四五
- for %%i in (%str%) do (
- echo %%i&echo.&ping -n 2 127.1>nul
- )
- pause>nul
复制代码 @echo off
:: 注释 这句不用注释了吧,关闭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 编辑 ] |
|