标题: 复制文件夹,如何自动过滤掉空文件
[打印本页]
作者: tanny
时间: 2007-12-1 14:10
标题: 复制文件夹,如何自动过滤掉空文件
用xcopy可以复制文件夹,但是好像不能过滤空文件,另外文件数量比较多,体积也比较大大约有几十G,会不会出什么问题
感谢大家帮忙
[
Last edited by tanny on 2007-12-1 at 03:38 PM ]
作者: fastslz
时间: 2007-12-1 14:36
for + find /v "0字节"
参考
http://www.cn-dos.net/forum/view ... ge=1&highlight=
作者: tanny
时间: 2007-12-1 16:07
感谢楼上的回答,可能是我没说清楚,我想排出的不是含“0字节”的文件,而是空文件,就是大小为0的文件
请问怎么实现不拷空文件,另外由于文件比较大希望有比较快的方法
刚看了下for的帮助%~zI说是扩展到文件的大小,可是不知道是怎么个作用,这个能实现吗
作者: fastslz
时间: 2007-12-1 16:51
测试遍历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 ]
作者: tanny
时间: 2007-12-1 17:20
还要麻烦下fastslz兄弟要是含有子目录怎么办
作者: fastslz
时间: 2007-12-1 17:35
以上代码都包含子目录呀
作者: tanny
时间: 2007-12-1 23:11
经测试确实可以,可是如果想把子目录保存下来怎么办呢,现在的代码是把所有文件输入到一个文件中
整个判断文件是否为空的思路是通过读文件吗?似乎速度方面有点问题,不行就把空文件也都复制了算了,到时候再删,只是不知道复制空文件会不会有问题
另外能否解释下"delims=" %%i in ('echo.%%~za^|findstr /x /v "0"')这段代码是什么意思呢
呵呵初次触电批处理,一下问了这么多问题,麻烦了
作者: fastslz
时间: 2007-12-1 23:28
多个判断文件大小效率当然慢的,绕一个圈又无所谓空文件了,本以为你了解xcopy其实问题还是出在xcopy上,自己xcopy /?看一下吧
作者: tanny
时间: 2007-12-2 18:54
xcopy的功能大致也了解了
/Y 复制文件审核设置(隐含 /O)。
现存目标文件。
这个是什么意思呢,不太清楚
作者: fastslz
时间: 2007-12-2 19:03
/O 复制文件所有权和 ACL 信息。我也没用过
/X 复制文件审核设置(
隐含 /O)。
/Y 复制文件审核设置(
隐含 /O)。
现存目标文件。
::::::不提示以确认改写一个现存目标文件。
/-Y 导致提示以确认改写一个
现存目标文件。
作者: everest79
时间: 2007-12-3 01:30
for /r %i in (*) do set/a 1/%~zi 2>nul&&echo %i -- %~zi
作者: YoDe
时间: 2007-12-3 03:59
这么简单的事搞的那么麻烦……
作者: tanny
时间: 2007-12-3 19:03
见笑了。。。。。。只是79兄弟能解释下代码吗,至少告诉俺源地址和目的地址啊呵呵