中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 复制文件夹,如何自动过滤掉空文件
作者:
标题: 复制文件夹,如何自动过滤掉空文件 上一主题 | 下一主题
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『楼 主』:  复制文件夹,如何自动过滤掉空文件

用xcopy可以复制文件夹,但是好像不能过滤空文件,另外文件数量比较多,体积也比较大大约有几十G,会不会出什么问题
感谢大家帮忙

[ Last edited by tanny on 2007-12-1 at 03:38 PM ]

2007-12-1 14:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

for + find /v "0字节"
参考
http://www.cn-dos.net/forum/view ... ge=1&highlight=



第一高手    第二高手

2007-12-1 14:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『第 3 楼』:  

感谢楼上的回答,可能是我没说清楚,我想排出的不是含“0字节”的文件,而是空文件,就是大小为0的文件
请问怎么实现不拷空文件,另外由于文件比较大希望有比较快的方法
刚看了下for的帮助%~zI说是扩展到文件的大小,可是不知道是怎么个作用,这个能实现吗

2007-12-1 16:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 4 楼』:  

测试遍历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 ]



第一高手    第二高手

2007-12-1 16:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『第 5 楼』:  

还要麻烦下fastslz兄弟要是含有子目录怎么办

2007-12-1 17:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  

以上代码都包含子目录呀



第一高手    第二高手

2007-12-1 17:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『第 7 楼』:  

经测试确实可以,可是如果想把子目录保存下来怎么办呢,现在的代码是把所有文件输入到一个文件中
整个判断文件是否为空的思路是通过读文件吗?似乎速度方面有点问题,不行就把空文件也都复制了算了,到时候再删,只是不知道复制空文件会不会有问题
另外能否解释下"delims=" %%i in ('echo.%%~za^|findstr /x /v "0"')这段代码是什么意思呢

呵呵初次触电批处理,一下问了这么多问题,麻烦了

2007-12-1 23:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 8 楼』:  

多个判断文件大小效率当然慢的,绕一个圈又无所谓空文件了,本以为你了解xcopy其实问题还是出在xcopy上,自己xcopy /?看一下吧



第一高手    第二高手

2007-12-1 23:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『第 9 楼』:  

xcopy的功能大致也了解了
/Y           复制文件审核设置(隐含 /O)。
              现存目标文件。
这个是什么意思呢,不太清楚

2007-12-2 18:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 10 楼』:  

/O           复制文件所有权和 ACL 信息。我也没用过
  /X           复制文件审核设置(隐含 /O)。
  /Y           复制文件审核设置(隐含 /O)。
               现存目标文件。::::::不提示以确认改写一个现存目标文件。
  /-Y          导致提示以确认改写一个
               现存目标文件。



第一高手    第二高手

2007-12-2 19:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 11 楼』:  

for /r %i in (*) do set/a 1/%~zi 2>nul&&echo %i -- %~zi

2007-12-3 01:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
YoDe
中级用户




积分 224
发帖 102
注册 2007-11-9
状态 离线
『第 12 楼』:  

这么简单的事搞的那么麻烦……

2007-12-3 03:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tanny
新手上路





积分 14
发帖 6
注册 2007-11-29
状态 离线
『第 13 楼』:  

见笑了。。。。。。只是79兄弟能解释下代码吗,至少告诉俺源地址和目的地址啊呵呵

2007-12-3 19:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: