Board logo

标题: [求助]求查找文件的批处理 [打印本页]

作者: lin8197     时间: 2004-12-16 00:00    标题: [求助]求查找文件的批处理

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

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



作者: willsort     时间: 2004-12-16 00:00
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编辑过]



作者: lin8197     时间: 2004-12-16 00:00
多谢解答,我试了,
在XP下可行,但在DOS及98不行,我主要在DOS下使用,请帮忙改一下
作者: willsort     时间: 2004-12-16 00:00
Re lin8197:    请首先告诉我问题出在什么地方(错误提示),然后在告诉我你的使用要求(比如是在特定机型上使用还是在一系列机型上使用)。总之,简单而准确地描述是很重要的,    我想到的问题可能有,文件名问题(含有空格),磁盘盘符问题(有可能碰到未准备好的光驱),你的问题是其中之一吗?
作者: lin8197     时间: 2004-12-16 00:00
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编辑过]



作者: lin8197     时间: 2004-12-16 00:00
对了,我没说清楚,我要在不同的机上用,每台机上的分区数是不同的
作者: willsort     时间: 2004-12-17 00:00
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