中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 08:59
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]如何根据文 本 文 件的内容拷贝数据
可打印版本  2,264 / 28
第1楼 lsjiang 发表于 2008-11-07 23:54
新手上路 发帖 16 积分 17
[已结]如何根据文 本 文 件的内容拷贝数据
详细内容:
根据文本文件的路径及文件名拷贝文件到指定路径下,并在该路径下建立相同的路径.例如:文本文件 a.txt 内容如下:

e:\book\abc\sample1.pdf
e:\book\abc\sample2.pdf
e:\book\abc\sample3.pdf

想拷贝sample1.pdf、sample2.pdf、sample3.pdf 到 f盘 ,并在f盘得到与e盘相同的目录结构:首先判断f盘中有没有book文件夹,如果没有则建一个book文件夹,然后再判断book有没有abc文件夹,如果没有则建一个abc文件夹,最后把三个文件拷贝到该文件夹中。
请教各位大侠,用批处理的方式能不能实现,多谢!

[ Last edited by lsjiang on 2008-11-13 at 17:14 ]
第2楼 lsjiang 发表于 2008-11-08 00:54
新手上路 发帖 16 积分 17
请大侠们费费心,多谢了!
第3楼 tireless 发表于 2008-11-08 01:02
银牌会员 发帖 1,122 积分 2,025
第4楼 lsjiang 发表于 2008-11-08 07:26
新手上路 发帖 16 积分 17
测试通过,完全实现所需功能!
非常感谢tireless!
第5楼 lsjiang 发表于 2008-11-08 08:53
新手上路 发帖 16 积分 17
补充求助:
能不能在批处理中同时实现把文本文件a.txt中已拷贝的文件行删除?
第6楼 tireless 发表于 2008-11-08 09:58
银牌会员 发帖 1,122 积分 2,025
Originally posted by lsjiang at 2008-11-8 08:53 AM:
补充求助:
能不能在批处理中同时实现把文本文件a.txt中已拷贝的文件行删除?

也就是说 a.txt 列表中的有些文件是不存在的是吗?将不存在的路径保存到 b.txt:

第7楼 lsjiang 发表于 2008-11-08 10:44
新手上路 发帖 16 积分 17
首先感谢tireless的不吝赐教!
补充中的意思也可以这样理解:把a.txt中已经拷贝完成的行删除!
是不是可以这样处理:把已经拷贝完成的文件夹及文件列出一个完整目录到另外一个文件文件b.txt中,然后比较a.txt和b.txt,从a.txt删除b.txt中有的行?(假设同一行中后面15个字符相同就视为此行相同)
我是新手,不知道用批处理能不能实现这样的功能?

[ Last edited by lsjiang on 2008-11-8 at 10:55 ]
第8楼 tireless 发表于 2008-11-08 11:02
银牌会员 发帖 1,122 积分 2,025
Re 7 楼
6 楼的代码不行么?
第9楼 lsjiang 发表于 2008-11-08 11:25
新手上路 发帖 16 积分 17
6楼的代码基本能实现所需目标,再请教一个问题:如果目标盘F盘空间不足的话,6楼的代码能正常执行吗?
第10楼 tireless 发表于 2008-11-08 11:27
银牌会员 发帖 1,122 积分 2,025
Re 9 楼
不行的吧
第11楼 lsjiang 发表于 2008-11-08 11:57
新手上路 发帖 16 积分 17
空间不足,拷贝不成功,会报错退出呢,还是能够继续执行“|| >>b.txt echo %%a”,把没有执行成功的部分输出到b.txt中呢?
第12楼 tireless 发表于 2008-11-08 13:32
银牌会员 发帖 1,122 积分 2,025
Originally posted by lsjiang at 2008-11-8 11:57 AM:
空间不足,拷贝不成功,会报错退出呢,还是能够继续执行“|| >>b.txt echo %%a”,把没有执行成功的部分输出到b.txt中呢?

应该是会把没有执行成功的部分输出到b.txt中。你自己测试吧,把一个盘的空间填满,然后... ...我的256MB内存的机器就不做测试了。

[ Last edited by tireless on 2008-11-8 at 13:34 ]
第13楼 lsjiang 发表于 2008-11-08 14:59
新手上路 发帖 16 积分 17
已经过测试:会把没有执行成功的部分输出到b.txt中,只是会显示很多“磁盘空间不足”的提示,直到把所有没拷贝成功的行都显示一遍才会执行后面的命令。
请问:如果a.txt文件中行数很多的话,显示时间会较长,如何在第一个“磁盘空间不足”的提示后即停止拷贝,执行后面的输出命令?
麻烦了,再次表示感谢!
第14楼 tireless 发表于 2008-11-08 15:45
银牌会员 发帖 1,122 积分 2,025
Re 13 楼
第15楼 lsjiang 发表于 2008-11-08 16:20
新手上路 发帖 16 积分 17
14楼的代码运行不成功,没有创建b.txt。可能是我没表达清楚。

6楼的代码已经基本能够达到目标,有个问题是在磁盘空间不足的情况下,一定要等到a.txt中所有行都执行完后才能进行输出动作,如果手动结束的话,后面的命令不执行就得不到b.txt。
我的意思是在在磁盘空间不足的情况下直接结束拷贝动作,并将没有成功拷贝的行输出到b.txt。

另外:if not exist "%%a" (>>b.txt echo %%a) 这句的意思没看明白,麻烦帮解释一下。谢谢

[ Last edited by lsjiang on 2008-11-8 at 16:29 ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023