无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 45338|回复: 37
打印 上一主题 下一主题

DOS有奖问答No6:关于循环命令FOR的使用

[复制链接]
1#
发表于 2006-1-10 22:19:29 | 显示全部楼层

DOS有奖问答No6:关于循环命令FOR的使用

[这个贴子最后由magictek在 2006/01/14 09:50pm 第 1 次编辑]

如果不使用批处理,一句话来完成:
For %f In (c d e f g h i j k l m n o p q r s t u v w)Do If Exist %f:\Boot.Ini Copy %f:\Boot.Ini %f:\Boot.Bak
缺点是不能找到以后不再查找,只能从C一直查到W
如果可以用批处理,就比较容易实现一些:
@Echo Off
For %%f in (c d e f g h i j k l m n o p q r s t u v w) Do If Exist %%f:\Boot.Ini Set Drv=%%f
Copy %Drv%:\Boot.Ini %Drv%:\Boot.Bak
不过我在测试的时候发现还是有点点问题,比如说我D盘F盘各有一个Boot.Ini,的确是检测到F盘有以后就备份F盘的了,但是F盘的Boot.Ini这是Copy了,源文件还在,每次都只能检测到F盘就不能到D盘了,如果要在DOS工具中间加入这个语句,我相反觉得第一种方式(即每个盘都找,只要有就都备份)相对还要安全一些
还是和以前一样,我对葛老师的问答积极参与,但是加密帖子,避免妨碍别人思路和积极性,如果我的回答有什么错误,请葛老师斧正
回复

使用道具 举报

2#
发表于 2006-1-11 00:34:35 | 显示全部楼层

DOS有奖问答No6:关于循环命令FOR的使用

[这个贴子最后由magictek在 2006/01/14 09:50pm 第 3 次编辑]

自己发现犯了个错误,第二种里面其实我是对%f反复多次赋值,有效的只是最后赋值的那个,第二条不算,重新想过

越想越复杂,本来正在尝试用for %%f in (c d e f) do set drv%%f=%%f:来对每个分区都赋值一个变量再来搜索的,忽然发现其实只要将c至w的次序反过来,便能够找到第一个有Boot.Ini的分区并对%f最终赋值,然后对该变量代表的分区中的文件备份就可以了
@Echo Off
For %%f in (w v u t s r q p o n m l k j i h g f e d c) Do If Exist %%f:\Boot.Ini Set Drv=%%f
Copy %Drv%:\Boot.Ini %Drv%:\Boot.Bak

个人感觉这个题目非常不错的,使用到了DOS里面最为复杂的for以及比较复杂的if,总记得以前哪位前辈说过:如果完全熟悉for的用法,DOS就可以称为精通了,在一些比较经典的题目里面,例如删除QQ目录中的号码文件夹,for还是很好用的,但是至于for的高级应用,别人写的我看得懂,但是要自己写一个很不错得还是觉得缺乏灵感,光就这一点以后还需要向葛老师多多请教
回复

使用道具 举报

3#
发表于 2006-1-11 22:20:10 | 显示全部楼层

DOS有奖问答No6:关于循环命令FOR的使用

drv值不能为空,这一点的确需要注意
回复

使用道具 举报

4#
发表于 2006-3-4 00:49:49 | 显示全部楼层

DOS有奖问答No6:关于循环命令FOR的使用

没必要在一个Attrib上面争论这么长时间吧,这个题目的重点是For的使用上面,不是在Attrib上面,在实际应用中,即使忘记使用Attrib了,也是很容易Debug出来的
回复

使用道具 举报

5#
发表于 2006-6-2 23:13:47 | 显示全部楼层
顶起来,不错的帖子,论坛改版后就沉下去了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-4 14:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表