无忧启动论坛
标题:
DOS版块好冷清,发几个学习的批处理实例.欢迎DOS爱好者参入讨论
[打印本页]
作者:
haiou327
时间:
2008-8-12 23:58
标题:
DOS版块好冷清,发几个学习的批处理实例.欢迎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
复制代码
[
本帖最后由 haiou327 于 2008-8-13 14:25 编辑
]
作者:
haiou327
时间:
2008-8-13 00:07
无事干改动一下,欢迎DOS爱好者参入讨论
@echo off
color fc
setlocal enabledelayedexpansion
set str=一二三四五 上山打老虎 老虎打不到 打到小松鼠 松鼠有几个 让我数一数 数来又数去 五四三二一 一二三四五
echo.&echo.
for %%i in (%str%) do (
set char=%%i
for /l %%j in (0 1 5) do (set/p=!char:~%%j,1!<nul&ping -n 2 127.1>nul
))
pause>nul
复制代码
再来稍作修改一下,帮助理解FOR的应用 循环十遍
@echo off
color fc
setlocal enabledelayedexpansion
echo.
set str=一二三四五 上山打老虎 老虎打不到 打到小松鼠 松鼠有几个 让我来数数 数来又数去 五四三二一 一二三四五
for /l %%j in (1 1 10) do (for /l %%h in (1 1 1) do (for %%i in (%str%) do (
set/p=%%i<nul&ping /n 2 127.1>nul
))
echo.&echo.&echo.
)
pause>nul
复制代码
[
本帖最后由 haiou327 于 2008-8-14 15:26 编辑
]
作者:
haiou327
时间:
2008-8-13 00:23
@echo off
color f0
setlocal enabledelayedexpansion
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.
set a=-<nul
set b=<nul
set c=">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"<nul
for /l %%i in (0,1,78) do set/p =!a!<nul&ping /n 0 127.1>nul
for /l %%j in (0,1,78) do set/p =!b!<nul
for /l %%k in (0,1,79) do set/p =!c:~%%k,1!<nul&ping /n 0 127.1>nul
pause>nul
复制代码
晚上搞了几次,把
-
换成
=
一直
不成功,这样看起来模拟开机进度条效果更加逼真.SET =后面不支持等号字符串,看来得用其它特殊字符替换了.
终于算是比较好的方法解决了.作了如下修改,把
-
替
换成了
═
,
═
字符串的循环次数减少到
38
,如果观察仔细的话,和>仅相差一个字符的位置.
@echo off
color f0
setlocal enabledelayedexpansion
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.
set a=═<nul
set b=<nul
set c=">"<nul
for /l %%i in (0,1,38) do set/p =!a!<nul&ping /n 0 127.1>nul
for /l %%j in (0,1,78) do set/p =!b!<nul
for /l %%k in (0,1,78) do set/p =!c1!<nul&ping /n 0 127.1>nul
pause>nul
复制代码
[
本帖最后由 haiou327 于 2008-8-14 15:33 编辑
]
作者:
一只旋转的陀螺
时间:
2008-8-13 05:49
唉,偶的DOS水平实在太差,勉强能看懂一些IMG文件中用到的批处理。
作者:
liumingqing
时间:
2008-8-13 08:48
我很喜歡,但是還沒有搞明白那些命令怎麼用的.
作者:
lianjiang
时间:
2008-8-13 09:12
欢迎楼主进行详细讲解,指导菜鸟领会批处理中的各句的意义。
作者:
haiou327
时间:
2008-8-13 12:17
欢迎楼主进行详细讲解,指导菜鸟领会批处理中的各句的意义。
复制代码
在有时间条件情怳下可以搞个注释,
在lianjiang面前班门弄斧了,请多指教.
作者:
haiou327
时间:
2008-8-13 13:40
在这里有于时间原因,先仅对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 编辑
]
作者:
hnbipd
时间:
2008-8-14 00:36
多谢楼主,可以讲这样的详细,方便我等菜鸟学习,希望继续讲下去,让我等可以学到更多的命令用法啊!不过好像还没有到8月23日吧
作者:
haiou327
时间:
2008-8-14 13:27
为便于理解FOR的工作流程
以下图为例:
for为1
(%str%)为2
%%i为3
DO以后括号里面第一个命令为4
第二个命令为5
到最后一个反括号)为至第一次循环结束,接着1-2-3-4-5第二次循环,类推至读取完2里面的最后一个内容并执行完,整个FOR任务完成.
for.JPG
(31.19 KB, 下载次数: 215)
下载附件
2008-8-14 13:31 上传
[
本帖最后由 haiou327 于 2008-8-14 13:43 编辑
]
作者:
360012450
时间:
2008-8-15 10:53
一直没 明白这是什么意思, 现在学习了 非常感谢LZ
作者:
lisong
时间:
2008-11-23 17:08
学习了楼主的知识,了解楼主的用心
作者:
czswuyou
时间:
2008-12-14 15:16
DOS版块好冷清,都不愿意去研究了。
作者:
sgssgs
时间:
2009-4-10 22:14
呵呵,慢慢学习,期待着也能成为DOS高手
作者:
hnxtddd
时间:
2009-8-12 09:23
哈哈,楼主真是好人啊 ...太详细了
作者:
hnxtddd
时间:
2009-8-12 09:37
哈哈,楼主真是好人啊 ...太详细了
作者:
liwei12345
时间:
2009-8-19 17:28
我还是觉得DOS比较有趣
作者:
lqyna
时间:
2009-9-15 01:47
感谢楼主为新手们做了好事。
作者:
青风
时间:
2009-9-20 08:26
LZ有没有专门学习批处理的网站,我感觉批处理用起来挺方便的。
作者:
fzdy108
时间:
2009-11-17 22:30
讲的太好了,谢谢
作者:
wwwcccyyy
时间:
2009-11-18 18:43
好贴子,认真拜读了。。。。
作者:
wwwcccyyy
时间:
2009-11-18 18:52
不知可不可以把变量值赋予一个文件呢???
作者:
wwwcccyyy
时间:
2009-11-18 18:53
也就是说变量值从一个文本文件读取呢?
作者:
allhigh
时间:
2010-4-22 15:41
老帖,学习用得着。这几天在看批处理。呵呵。
作者:
2010wenmin92
时间:
2011-1-3 21:14
现在学习Dos的人越来越少了,可是我却认为学习了Dos才能真正理解计算机的原理,但是苦于没有好的指导者,啥都不懂,哎~~~希望此论坛能够解我心头之忧啊!
作者:
2011zhangjian
时间:
2011-3-3 17:43
谢谢楼主,这块正是我的弱项
作者:
zery
时间:
2011-3-22 00:30
感受了DOS的强大!
作者:
2011hobbya
时间:
2011-4-1 10:52
学业、游戏及工作都是从DOS开始,真教人怀念。
作者:
2011benhack
时间:
2011-4-5 13:16
非常感谢楼主,辛苦啦。
作者:
lizp2020
时间:
2011-4-20 06:56
看了楼主的帖子,我发现我什么都不会。
作者:
2011emu
时间:
2011-4-20 09:27
这个贴子可以学习一下。
作者:
2011198976
时间:
2011-4-22 08:39
楼主您太伟大了!讲解的真详细受教啦!
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3