中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 17:52
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 复制文件夹,如何自动过滤掉空文件 查看 1,232 回复 12
楼 主 复制文件夹,如何自动过滤掉空文件 发表于 2007-12-01 14:10 ·  中国 山东 联通数据上网公共出口
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
用xcopy可以复制文件夹,但是好像不能过滤空文件,另外文件数量比较多,体积也比较大大约有几十G,会不会出什么问题
感谢大家帮忙

[ Last edited by tanny on 2007-12-1 at 03:38 PM ]
2 发表于 2007-12-01 14:36 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
第一高手 第二高手

3 发表于 2007-12-01 16:07 ·  中国 山东 联通数据上网公共出口
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
感谢楼上的回答,可能是我没说清楚,我想排出的不是含“0字节”的文件,而是空文件,就是大小为0的文件
请问怎么实现不拷空文件,另外由于文件比较大希望有比较快的方法
刚看了下for的帮助%~zI说是扩展到文件的大小,可是不知道是怎么个作用,这个能实现吗
4 发表于 2007-12-01 16:51 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
测试遍历F盘下所有文件包括子目录,排除0字节文件
@echo off
for /r f:\ %%a in (*) do (
for /f "delims=" %%i in ('echo.%%~za^|findstr /x /v "0"') do echo 文件大小%%i 对应文件"%%a"
)
pause


实际应用
@echo off
for /r 盘符\目录名 %%a in (*) do (
for /f "delims=" %%i in ('echo.%%~za^|findstr /x /v "0"') do xcopy /y "%%a" "目标"
)
pause


外加1个能处理包括系统文件的
@echo off
for /f "delims=" %%a in ('dir /s /b /a-d 盘符\目录名\*') do (
for /f "delims=" %%i in ('echo.%%~za^|findstr /x /v "0"') do echo 文件大小%%i 对应文件"%%a"
)
pause


[ Last edited by fastslz on 2007-12-1 at 05:05 PM ]
第一高手 第二高手

5 发表于 2007-12-01 17:20 ·  中国 山东 联通数据上网公共出口
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
还要麻烦下fastslz兄弟要是含有子目录怎么办
6 发表于 2007-12-01 17:35 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
以上代码都包含子目录呀
第一高手 第二高手

7 发表于 2007-12-01 23:11 ·  中国 山东 济南 联通
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
经测试确实可以,可是如果想把子目录保存下来怎么办呢,现在的代码是把所有文件输入到一个文件中
整个判断文件是否为空的思路是通过读文件吗?似乎速度方面有点问题,不行就把空文件也都复制了算了,到时候再删,只是不知道复制空文件会不会有问题
另外能否解释下"delims=" %%i in ('echo.%%~za^|findstr /x /v "0"')这段代码是什么意思呢

呵呵初次触电批处理,一下问了这么多问题,麻烦了
8 发表于 2007-12-01 23:28 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
多个判断文件大小效率当然慢的,绕一个圈又无所谓空文件了,本以为你了解xcopy其实问题还是出在xcopy上,自己xcopy /?看一下吧
第一高手 第二高手

9 发表于 2007-12-02 18:54 ·  中国 山东 济南 电信
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
xcopy的功能大致也了解了
/Y 复制文件审核设置(隐含 /O)。
现存目标文件。
这个是什么意思呢,不太清楚
10 发表于 2007-12-02 19:03 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
/O 复制文件所有权和 ACL 信息。我也没用过
/X 复制文件审核设置(隐含 /O)。
/Y 复制文件审核设置(隐含 /O)。
现存目标文件。::::::不提示以确认改写一个现存目标文件。
/-Y 导致提示以确认改写一个
现存目标文件。
第一高手 第二高手

11 发表于 2007-12-03 01:30 ·  中国 广东 广州 天河区 电信
金牌会员
★★★★
一叶枝头,万树皆春
积分 2,564
发帖 1,127
注册 2006-12-25 22:57
19年会员
UID 74552
性别 男
状态 离线
for /r %i in (*) do set/a 1/%~zi 2>nul&&echo %i -- %~zi
12 发表于 2007-12-03 03:59 ·  中国 浙江 台州 电信
中级用户
★★
积分 224
发帖 102
注册 2007-11-09 00:19
18年会员
UID 102111
性别 男
状态 离线
这么简单的事搞的那么麻烦……
13 发表于 2007-12-03 19:03 ·  中国 山东 济南 电信
新手上路
积分 14
发帖 6
注册 2007-11-29 22:11
18年会员
UID 104202
性别 男
状态 离线
见笑了。。。。。。只是79兄弟能解释下代码吗,至少告诉俺源地址和目的地址啊呵呵
论坛跳转: