中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 【已解决】只复制文件夹 不包括里面的内容
« [1] [2] »
作者:
标题: 【已解决】只复制文件夹 不包括里面的内容 上一主题 | 下一主题
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 16 楼』:  

回HAT版主。
XCOPY本就是带目录结构复制文件的。如楼主的系统有XCOPY,以编9楼代码的水平,应当直接用XCOPY。
其实,一是对楼主的提问方式不满,尤其“其实刚刚在其它论坛发贴过!”一句,好象有本坛非得跟其他论坛PK之嫌。二是想提示楼主,5楼yishanju已指出的XCOPY,本是最佳。
以我对本坛的认知,相信许多人都清楚,9楼代码虽有水准,但就楼主的问题而言,简单问题复杂化了。

2009-4-7 02:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





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

就9楼代码而言,我认为13楼给的建议非常好,但用xcopy直接实现我确实不知怎么办。楼主的要求是保留批处理当前目录的所有目录及子目录以及jpg、gif文件。
如何用xcopy只复制指定后缀的文件还请兄不吝赐教。
曾经尝试过用xcopy /t /e 来构建目录树,但发现如果目标目录也在批处理当前目录时会提示“不能执行周期性复制”的错误。
zpz0012005 兄曾给过一个 xcopy 的代码,但如果“目标目录”在“某文件夹具体路径”里时会提示“不能执行周期性复制”
@echo off
set src=某文件夹具体路径
set dst=目标目录
for %%a in (jpg gif) do xcopy /s/e/c "%src%\*.%%a" "%dst%\"
[ Last edited by 26933062 on 2009-4-7 at 05:32 ]



致精致简!
2009-4-7 05:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
balinger
中级用户




积分 356
发帖 115
注册 2004-7-27
状态 离线
『第 18 楼』:  

@echo off
set src=源目录路径
set dst=目标目录
for %%a in (jpg gif) do xcopy /s/e/c "%src%\*.%%a" "%dst%\"

我的理解是,该批处理不在源目录下,生成的目标目录与批处理在同一目录。否则不必指定源目录具体路径,直接用.代替%src%即可。

如果该批处理在源目录下,会提示“不能执行周期性复制”的错误。因为被复制的源目录包含了目标目录。其实可以变通一下,把目标目录移到父目录下,与源目录并列:
@echo off
set dst=目标目录名
for %%a in (jpg gif) do xcopy /s/e/c ".\*.%%a" "..\%dst%\"

同理,如果批处理不在源目录下,希望生成的目标目录与源目录在一起:
@echo off
set src=源目录路径
set dst=目标目录
for %%a in (jpg gif) do xcopy /s/e/c "%src%\*.%%a" "%src%\..\%dst%\"

当然,如果源目录是根目录,用..肯定不行。其实9楼的代码现在也不适合在根目录下执行,不过他可以修改,加一个\。

一定要生成的目标目录在源目录下,9楼的代码可以,xcopy不可以。但我以为并不必要,复制本身就是从一个地方到另一个地方,不改变被复制的对象。xcopy不允许目标目录在源目录中,不是没有道理的。

楼主没有要求目标目录在源目录下,也没要求批处理在源目录下,复制的对象也不是根目录。依我的愚见,就两个xcopy就得了,文件类型多了再用for。

xcopy /s/e/c "c:\123\*.jpg" "d:\456\"
xcopy /s/e/c "c:\123\*.gif" "d:\456\"

   此帖被 +5 点积分      点击查看详情   
评分人:【 26933062 分数: +5  时间:2009-4-7 11:48


2009-4-7 11:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ligui0001
初级用户





积分 58
发帖 41
注册 2009-4-3
状态 离线
『第 19 楼』:  

5楼写不不错

2009-4-9 04:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
a22124497
新手上路





积分 14
发帖 10
注册 2009-3-20
状态 离线
『第 20 楼』:  

DIR得到文件事夹,然后再创建文件不就行了嘛?

2009-4-10 00:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: