中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 16:39
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 【已解决】只复制文件夹 不包括里面的内容
可打印版本  3,339 / 19
第16楼 balinger 发表于 2009-04-07 02:30
中级用户 发帖 115 积分 356
回HAT版主。
XCOPY本就是带目录结构复制文件的。如楼主的系统有XCOPY,以编9楼代码的水平,应当直接用XCOPY。
其实,一是对楼主的提问方式不满,尤其“其实刚刚在其它论坛发贴过!”一句,好象有本坛非得跟其他论坛PK之嫌。二是想提示楼主,5楼yishanju已指出的XCOPY,本是最佳。
以我对本坛的认知,相信许多人都清楚,9楼代码虽有水准,但就楼主的问题而言,简单问题复杂化了。
第17楼 26933062 发表于 2009-04-07 05:01
银牌会员 发帖 879 积分 2,268
就9楼代码而言,我认为13楼给的建议非常好,但用xcopy直接实现我确实不知怎么办。楼主的要求是保留批处理当前目录的所有目录及子目录以及jpg、gif文件。
如何用xcopy只复制指定后缀的文件还请兄不吝赐教。
曾经尝试过用xcopy /t /e 来构建目录树,但发现如果目标目录也在批处理当前目录时会提示“不能执行周期性复制”的错误。
zpz0012005 兄曾给过一个 xcopy 的代码,但如果“目标目录”在“某文件夹具体路径”里时会提示“不能执行周期性复制”

[ Last edited by 26933062 on 2009-4-7 at 05:32 ]
第18楼 balinger 发表于 2009-04-07 11:33
中级用户 发帖 115 积分 356
@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\"
第19楼 ligui0001 发表于 2009-04-09 04:13
初级用户 发帖 41 积分 58
5楼写不不错
第20楼 a22124497 发表于 2009-04-10 00:10
新手上路 发帖 10 积分 14
DIR得到文件事夹,然后再创建文件不就行了嘛?
上一页  1 2
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023