|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『楼 主』:
[已结]如何根据文 本 文 件的内容拷贝数据
使用 LLM 解释/回答一下
详细内容:
根据文本文件的路径及文件名拷贝文件到指定路径下,并在该路径下建立相同的路径.例如:文本文件 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 ]
|
|
2008-11-7 23:54 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
|
2008-11-8 00:54 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第 3 楼』:
使用 LLM 解释/回答一下
@echo off
for /f "delims=" %%a in (a.txt) do (
if not exist "F:%%~pa" md "F:%%~pa"
copy /y "%%a" "F:%%~pa"
)
此帖被 +2 点积分 点击查看详情 评分人:【 HAT 】 | 分数: +2 | 时间:2008-11-8 11:13 |
|
|
|
2008-11-8 01:02 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
|
2008-11-8 07:26 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
|
2008-11-8 08:53 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第 6 楼』:
使用 LLM 解释/回答一下
Originally posted by lsjiang at 2008-11-8 08:53 AM:
补充求助:
能不能在批处理中同时实现把文本文件a.txt中已拷贝的文件行删除?
也就是说 a.txt 列表中的有些文件是不存在的是吗?将不存在的路径保存到 b.txt:
@echo off
for /f "delims=" %%a in (a.txt) do (
if not exist "F:%%~pa" md "F:%%~pa"
copy /y "%%a" "F:%%~pa" >nul || >>b.txt echo %%a
)
|
|
2008-11-8 09:58 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『第 7 楼』:
使用 LLM 解释/回答一下
首先感谢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 ]
|
|
2008-11-8 10:44 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
|
2008-11-8 11:02 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『第 9 楼』:
使用 LLM 解释/回答一下
6楼的代码基本能实现所需目标,再请教一个问题:如果目标盘F盘空间不足的话,6楼的代码能正常执行吗?
|
|
2008-11-8 11:25 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
|
2008-11-8 11:27 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『第 11 楼』:
使用 LLM 解释/回答一下
空间不足,拷贝不成功,会报错退出呢,还是能够继续执行“|| >>b.txt echo %%a”,把没有执行成功的部分输出到b.txt中呢?
|
|
2008-11-8 11:57 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第 12 楼』:
使用 LLM 解释/回答一下
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 ]
|
|
2008-11-8 13:32 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『第 13 楼』:
使用 LLM 解释/回答一下
已经过测试:会把没有执行成功的部分输出到b.txt中,只是会显示很多“磁盘空间不足”的提示,直到把所有没拷贝成功的行都显示一遍才会执行后面的命令。
请问:如果a.txt文件中行数很多的话,显示时间会较长,如何在第一个“磁盘空间不足”的提示后即停止拷贝,执行后面的输出命令?
麻烦了,再次表示感谢!
|
|
2008-11-8 14:59 |
|
|
tireless
银牌会员
    
积分 2025
发帖 1122
注册 2007-9-5
状态 离线
|
『第 14 楼』:
Re 13 楼
使用 LLM 解释/回答一下
@echo off
for /f "delims=" %%a in (a.txt) do (
if not exist "F:%%~pa" md "F:%%~pa"
if not exist "%%a" (>>b.txt echo %%a) else copy /y "%%a" "F:%%~pa" >nul || pause & exit /b
)
|
|
2008-11-8 15:45 |
|
|
lsjiang
新手上路

积分 17
发帖 16
注册 2008-11-7
状态 离线
|
『第 15 楼』:
使用 LLM 解释/回答一下
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 ]
|
|
2008-11-8 16:20 |
|