中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-02 06:00
48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何批量复制文件下的指定文件??
可打印版本  2,013 / 9
第1楼 newstart 发表于 2006-10-08 23:47
新手上路 发帖 4 积分 12
如何批量复制文件下的指定文件??
以前有过人问过这个问题。不过贴子上的东西没看太懂。
原贴(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 ]
第2楼 namejm 发表于 2006-10-08 23:53
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  请说明你的DOS版本,比如是纯DOS还是windows下的CMD,若是纯DOS,那又是哪个版本。

  另外,你说的是文件还是文件夹?a00001-a09999怎么看都像文件夹名啊。“他们的是a00003..a004234..a032043...等无规则的名字。",这样说来,这些文件的名和A下的文件名还是一样的么?
第3楼 newstart 发表于 2006-10-09 00:14
新手上路 发帖 4 积分 12
1.DOS是xp下的cmd
2.a00001-a09999都是.txt的文档
3.而我需要的目录是是a00003..a004234..a032043...等无规则的名字,(都是文档名字)
4,我需要的是把目录中的1000个文档复制到另外的文件夹,如果根据目录找的话会相当的复杂。所以,特来请教!~!谢谢,
第4楼 weilong888 发表于 2006-10-09 00:32
银牌会员 发帖 548 积分 1,270
在CMD中先输入help xcopy
第5楼 namejm 发表于 2006-10-09 00:35
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  Climbing大侠的代码写得已经够强悍了,如果换成我,我也会弄个类似的代码给你的,而你说看不太懂,那就没办法了。

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

  回过头来再看一下的描述,发现你是这样说的 “而我需要的目录是是a00003..a004234..a032043...等无规则的名字,(都是文档名字)”,a00003等究竟是文件还是文件夹,我又被你搞糊涂了,汗一个。
第6楼 jieok3375 发表于 2006-10-09 00:36
中级用户 发帖 130 积分 282 来自 广东
楼主的问题讲的好像不太明白……
(偶滴理解能力差)
第7楼 newstart 发表于 2006-10-09 05:48
新手上路 发帖 4 积分 12
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

第8楼 namejm 发表于 2006-10-09 11:43
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  楼主的问题已经属于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下。针对这个具体需求,我写了一段代码,请你测试:
第9楼 lxmxn 发表于 2006-10-09 12:26
版主 发帖 4,938 积分 11,386

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

呵呵~~

建议提问的时候,尽量把问题描述详细一点~~
第10楼 newstart 发表于 2006-10-09 20:17
新手上路 发帖 4 积分 12
感谢namejm大大在8楼的回答。
你已经明白了我的意思*_^

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

结果。。。。。。。

。。。。。。。。。

。。。。。。。。哎。

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

[ Last edited by newstart on 2006-10-9 at 20:23 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023