中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 批处理复制文档 上一主题 | 下一主题
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『楼 主』:  批处理复制文档

现有2个文档a.txt   b.txt
a.txt内容如下
f:\111\sggs\ghf\dg.txt
f:\111\ag\sd\kl.txt
f:\111\hj\gh\dgj.txt
f:\111\jk\tuyf\djk.txt
f:\111\kl\kllh\fdg.txt

b.txt内容如下
f:\111\skl
f:\111\wes
f:\111\hjl
f:\111\kl
f:\111\kl

要求:将a.txt中第一行的文档复制到b.txt中的第一行目录下,第二行的文档复制到b.txt中的第二行目录下,依次类推
接触批处理不久,想破了头想不出,请各位帮帮忙,先谢了!


2006-12-19 21:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  


@echo off
setlocal enabledelayedexpansion
set skip=0
for /f %%i in (a.txt) do (
        set src=%%i
        if !skip!==0 (set /p dst=<b.txt) else (call :dst !skip!)
        set /a skip+=1
        if defined dst echo copy "!src!" "!dst!"
        set src=
        set dst=
)
pause>nul
GOTO :EOF

:dst
for /f "skip=%1" %%i in (b.txt) do (set dst=%%i&GOTO :EOF)


   此帖被 +2 点积分    点击查看详情   
评分人:【 26933062 分数: +2  时间:2006-12-20 10:57


2006-12-19 22:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 3 楼』:  

忘说明了,上面是演示代码。
如果觉得没问题,把这行中的 echo 去掉就行了。

if defined dst echo copy "!src!" "!dst!"

2006-12-19 22:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 4 楼』:  

2楼的高手,非常谢谢你,但怎么第一行的复制不了呢?
和我复制的格式有关吗?
还有想请问一下,红字部分是什么意思?
可以把每句都作个解释吗?
谢谢!!!
setlocal enabledelayedexpansion
set skip=0
for /f %%i in (22.txt) do (
set src=%%i
if !skip!==0 (set /p dst=<33.txt) else (call :dst !skip!)
set /a skip+=1
if defined dst copy "!src!" "!dst!"
set src=
set dst=

)
pause>nul
GOTO :EOF
:dst
for /f "skip=%1" %%i in (33.txt) do (set dst=%%i&GOTO :EOF)
还有就是eof标签在哪里?

[ Last edited by 26933062 on 2006-12-19 at 09:53 AM ]

2006-12-19 22:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 5 楼』:  

那是启用变量延迟,你可以在论坛搜下,有很详细的解释。
我写的时候试过演示代码,的确处理了第一行啊。

copy "f:\111\sggs\ghf\dg.txt" "f:\111\skl"
copy "f:\111\ag\sd\kl.txt" "f:\111\wes"
copy "f:\111\hj\gh\dgj.txt" "f:\111\hjl"
copy "f:\111\jk\tuyf\djk.txt" "f:\111\kl"
copy "f:\111\kl\kllh\fdg.txt" "f:\111\kl"

显示了上面这些

eof 应该是 end of file 的意思,指文件尾,就相当于在最后放个 :end 。

[ Last edited by NaturalJ0 on 2006-12-19 at 11:12 PM ]

   此帖被 +6 点积分       点击查看详情   
评分人:【 ccwan 分数: +5  时间:2006-12-20 03:29
评分人:【 mqi 分数: +1  时间:2006-12-20 21:55


2006-12-19 23:00
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 6 楼』:  

不好意思,又麻烦你,我没去掉echo的时候在cmd下,也显示处理了第一行,但是去掉echo后,就是无法复制第一行.郁闷

2006-12-19 23:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 7 楼』:  

那你查一下,原文件是否存在,目标文件夹是否存在。

2006-12-19 23:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 8 楼』:  

搞定了,把copy改成xcopy就可以了,再次谢谢你!!

2006-12-20 00:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mackyliu
初级用户





积分 32
发帖 16
注册 2006-10-19
状态 离线
『第 9 楼』:  

高人,真是高人

2006-12-20 00:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 10 楼』:  

没仔细看,我一直以为是合并文档呢!^_^



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-20 00:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 11 楼』:  

不好意思,加分加错地方了^_^
不过都是给NaturalJ0加的,就这样吧。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-20 03:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 12 楼』:  

还有个问题,
我怎么给最佳答案加分?就是说怎么结束我的提问?

2006-12-20 09:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


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

  每篇帖子的右下角都有一个 评分 按钮,可以给别人打分。

  结束提问是什么意思呢?是不是想给自己的问题加上已解决的标记?如果是这样的话,可以点顶楼帖子右下脚的 编辑 ,通过修改帖子标题来打标记。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-20 10:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by namejm at 2006-12-19 21:03:
  每篇帖子的右下角都有一个 评分 按钮,可以给别人打分。

  结束提问是什么意思呢?是不是想给自己的问题加上已解决的标记?如果是这栠...

谢谢 懂了,

2006-12-20 11:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: