中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [求助]求查找文件的批处理 上一主题 | 下一主题
lin8197
初级用户




积分 186
发帖 36
注册 2003-10-2
状态 离线
『楼 主』:  [求助]求查找文件的批处理

已知:n:\aaaa\    里面有  a.exe   b.exe  c.bat ... 等几个文件,其中N=C:,D:,E:... M:
求:查找到aaaa文件夹里的文件,并COPY到C:\的批处理。
本菜鸟因为对循环语句不熟悉,只好一个盘一个盘地找,太麻烦,请大侠帮我写个简单的。

[此贴子已经被作者于2004-12-16 9:24:38编辑过]




2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 2 楼』:  

Re lin8197:
    一个简化的程序,忽略了许多细节,并未经测试,你先试用一下,有什么问题在讨论。

  Quote:
@echo off
if [%1]==[] %0 c d e f g h i j k l m
:loop
if [%1]==[] goto end
for %%f in (a.exe b.exe c.bat) do if exist %1:\aaaa\%%f copy %1:\aaaa\%%f c:\
shift
goto loop
:end

[此贴子已经被作者于2004-12-16 17:05:46编辑过]






※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lin8197
初级用户




积分 186
发帖 36
注册 2003-10-2
状态 离线
『第 3 楼』:  

多谢解答,我试了,
在XP下可行,但在DOS及98不行,我主要在DOS下使用,请帮忙改一下

2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re lin8197:    请首先告诉我问题出在什么地方(错误提示),然后在告诉我你的使用要求(比如是在特定机型上使用还是在一系列机型上使用)。总之,简单而准确地描述是很重要的,    我想到的问题可能有,文件名问题(含有空格),磁盘盘符问题(有可能碰到未准备好的光驱),你的问题是其中之一吗?



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lin8197
初级用户




积分 186
发帖 36
注册 2003-10-2
状态 离线
『第 5 楼』:  

d:\>abc                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                0 file(s) copied                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                0 file(s) copied                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                0 file(s) copied                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
CDR101: Not ready reading drive G我在虚拟机中试,以上是提示

[此贴子已经被作者于2004-12-17 8:06:36编辑过]




2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lin8197
初级用户




积分 186
发帖 36
注册 2003-10-2
状态 离线
『第 6 楼』:  

对了,我没说清楚,我要在不同的机上用,每台机上的分区数是不同的

2004-12-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re lin8197:    看样子首先遇到了非硬盘盘符判断问题。因为98和dos用if exist 访问未准备好的盘时会出现错误提示,而xp,2000是忽略这个错误。    解决它,首先保证盘符列表尽可能的小,我不知道你的c~m是如何确定的,如果可能的话,尽量缩小其范围。另外,对于每个盘符都应该做一个是否准备好的检测,这个最简单的办法是使用第三方工具dready.com,来自hosrt32工具包,用法如下(程序同样未经测试)。如果你的环境不适宜使用第三方工具,可以动态生成一个脚本,然后使用debug来调用dos中断来得到类似的效果。    另外,如果在dos6.xx以下使用,请注意使用8.3文件名约定,否则会出现一些意外的错误。

  Quote:
@echo off
if [%1]==[] %0 $ c d e f g h i j k l m
:loop
shift
if [%1]==[] goto end
dready %1
if errorlevel 2 goto loop
for %%f in (a.exe b.exe c.bat) do if exist %1:\aaaa\%%f copy %1:\aaaa\%%f c:\
goto loop
:end





※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-12-17 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: