中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何批量复制文件下的指定文件??
作者:
标题: 如何批量复制文件下的指定文件?? 上一主题 | 下一主题
newstart
新手上路





积分 12
发帖 4
注册 2006-10-8
状态 离线
『楼 主』:  如何批量复制文件下的指定文件??

以前有过人问过这个问题。不过贴子上的东西没看太懂。
原贴(http://www.cn-dos.net/forum/viewthread.php?tid=20648


我想问一下。
比如,我C盘下A文件夹里有10000个.txt文档,
文件名是a00001-a09999(都是.txt文档,不是文件夹)

而我有一个目录。约1000个,是我需要A里的文件,
比如他们是
C:\a\a00001.txt
C:\a\a00602.txt
C:\a\a00203.txt
C:\a\a00007.txt
。。。
C:\a\a04203.txt
C:\a\a04303.txt
等无规则的名字。
我想请问一下,如何把C:\a里面(再注,A里无子文件夹)
我想目录里的文档复制到别的文件夹下比如C:\b ?

我在网上搜索的结果是在DOS下运行如XCOPY的东西。但说的不太清楚。
请问有什么方法么?如果有请说的清楚,详细一些,谢谢。

或者发邮件到to7m8@126.com.   thx!

[ Last edited by newstart on 2006-10-9 at 05:50 ]

2006-10-8 23:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  请说明你的DOS版本,比如是纯DOS还是windows下的CMD,若是纯DOS,那又是哪个版本。

  另外,你说的是文件还是文件夹?a00001-a09999怎么看都像文件夹名啊。“他们的是a00003..a004234..a032043...等无规则的名字。",这样说来,这些文件的名和A下的文件名还是一样的么?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-8 23:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
newstart
新手上路





积分 12
发帖 4
注册 2006-10-8
状态 离线
『第 3 楼』:  

1.DOS是xp下的cmd
2.a00001-a09999都是.txt的文档
3.而我需要的目录是是a00003..a004234..a032043...等无规则的名字,(都是文档名字)
4,我需要的是把目录中的1000个文档复制到另外的文件夹,如果根据目录找的话会相当的复杂。所以,特来请教!~!谢谢,

2006-10-9 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
weilong888
银牌会员




积分 1270
发帖 548
注册 2004-5-31
状态 离线
『第 4 楼』:  

在CMD中先输入help xcopy

2006-10-9 00:32
查看资料  发送邮件  发短消息 网志  OICQ (314295922)  编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 5 楼』:  

  Climbing大侠的代码写得已经够强悍了,如果换成我,我也会弄个类似的代码给你的,而你说看不太懂,那就没办法了。

  给你提示一下:要用到for语句的扩展用法,提取文件名,用for %%i in () do echo %%~ni 的格式。

  回过头来再看一下的描述,发现你是这样说的 “而我需要的目录是是a00003..a004234..a032043...等无规则的名字,(都是文档名字)”,a00003等究竟是文件还是文件夹,我又被你搞糊涂了,汗一个。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-9 00:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jieok3375
中级用户





积分 282
发帖 130
注册 2006-9-20
来自 广东
状态 离线
『第 6 楼』:  

楼主的问题讲的好像不太明白……
(偶滴理解能力差)



~~~~好好学习
              天天向上~~~~
2006-10-9 00:36
查看资料  发送邮件  发短消息 网志  OICQ (147385156)  编辑帖子  回复  引用回复
newstart
新手上路





积分 12
发帖 4
注册 2006-10-8
状态 离线
『第 7 楼』:  

namejm版主,我所说的目录就是存放文档(.txt)的地址的。
例如:
C:\a\a00001.txt
C:\a\a00002.txt
C:\a\a00003.txt
C:\a\a00007.txt
C:\a\a04303.txt
..
...

很不幸,我的表达能力不够专业,让大家见笑了。

我C盘下A文件夹里有10000个.txt文档,
文件名是a00001.txt-a09999.txt(都是.txt文档,不是文件夹)

而我有一个目录。约1000个,是我需要A里的文件,
比如他们是
C:\a\a00001.txt
C:\a\a00602.txt
C:\a\a00203.txt
C:\a\a00007.txt
。。。
C:\a\a04203.txt
C:\a\a04303.txt
等无规则的名字。
我想请问一下,如何把C:\a里面(再注,A里无子文件夹)
我想目录里的文档复制到别的文件夹下比如C:\b ?


以下是我用Climbing大大写的来试,
结果提示我说"此时不应有 %%i


@echo off
::C:\b
set dst=C:\a

for /F "tokens=*" %%i in (list.txt) do md %dst%%%~pi && copy /y %%i %dst%%%~pi && echo success copy %%i

[code]我想问一下。1,以上语句是一块粘贴到cmd的c:\右边回车就行了么?
2,list.txt放在c:\下面就行了么?
3,形如a00234的是.txt文档,不是文件夹!

[ Last edited by newstart on 2006-10-9 at 05:54 ]

2006-10-9 05:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 8 楼』:  

  楼主的问题已经属于CMD批处理的范围了,建议发往 DOS批处理 & 脚本技术(批处理室) 。

  回答一下『第 7 楼』的部分问题:
  1、climbing的代码不能在CMD命令窗口下运行,若要逐句运行的话,应该把所有的双百分号改成单百分号;
  2、list.txt应该放在和这个批处理程序相同的目录下,或者放在任意目录下之后,把 (list.txt) 改成 (路径\list.txt) 的格式。

  另外,我对你修改过后的描述还是有个关键的地方看不懂:"而我有一个目录。约1000个,是我需要A里的文件",1000个目录?吓人哦。看了你后面的举例,应该是说1000条记录吧?姑且按照我的理解,把你的问题理解成:c:\a下有10000个文本文件,而你只想复制其中的1000个,这1000个文件的绝对路径已经被你提取出来了,放在一个叫list.txt的文本中,现在想把这1000个文本文件复制到c:\b下。针对这个具体需求,我写了一段代码,请你测试:
@echo off
:: list.txt里的内容为你即将复制的文档的绝对路径清单,一行一条记录
:: list.txt要和此脚本程序放在同一目录下
if not exist c:\b md c:\
for /f "tokens=*" %%i in (list.txt) do copy "%%i" c:\b
start c:\b




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-9 11:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 9 楼』:  


楼主还是没有把问题描述清楚,把版主都搞急了~~

呵呵~~

建议提问的时候,尽量把问题描述详细一点~~


2006-10-9 12:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
newstart
新手上路





积分 12
发帖 4
注册 2006-10-8
状态 离线
『第 10 楼』:  

感谢namejm大大在8楼的回答。
你已经明白了我的意思*_^

我在cmd下。把你的程序改成一个%

结果。。。。。。。

。。。。。。。。。

。。。。。。。。哎。

终于成功了!!谢谢大家!:P:P:P

[ Last edited by newstart on 2006-10-9 at 20:23 ]

2006-10-9 20:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: