标题: [文件操作] 复制时重名文件处理 [打印本页]
作者: jjyf0208 时间: 2009-9-16 11:26 标题: 复制时重名文件处理
我有A、B两个文件夹,其中存在很多同名的文件,各文件大小一样或不一样。
现在,希望合并文件夹(把A内文件复制到B内),如文件名一样,则用大的替换掉小的,否则不替换。
请问,代码如何编写。我试验了很多,均不行。
在此先行谢谢指导!!
作者: Lumiere 时间: 2009-9-16 12:35
- @echo off&setlocal enabledelayedexpansion
- rem suppose A, B and this bat file are under the same path
- cd A
- for %%a in (*.*) do (
- if not exist "..\B\%%a" (copy "..\A\%%a" "..\B" ) else (
- set size1=%%~za&cd "..\B"
- for /f %%i in ('dir /a /b %%a') do set size2=%%~zi
- if !size1! gtr !size2! copy "..\A\%%a" "..\B"
- cd "..\A"
- ))
- pause>nul
复制代码
This code has passed test.
[ 本帖最后由 Lumiere 于 2009-9-16 22:36 编辑 ]
作者: jjyf0208 时间: 2009-9-16 16:24 标题: 回复 2楼 的帖子
首先,感谢“Lumiere”的热心帮助!!
按照说明,把A、B文件夹放在同一路径下,执行了提供的代码,提示:“已复制 0 个文件。文件无法自身复制。”
不知何故,能否帮助再看一看。
作者: Lumiere 时间: 2009-9-16 16:52
文件无法复制自身是小事,其他文件也无法复制么?那个加一个2>nul就能过滤掉,应该不影响其他文件拷贝的。是一个文件都没有复制么?
作者: Lumiere 时间: 2009-9-16 23:10 标题: 回复 3楼 的帖子
写得快,有些小错误,现在已经纠正,并且也测试过,没问题。
作者: jjyf0208 时间: 2009-9-17 10:24 标题: 回复 5楼 的帖子
已经按照“Lumiere”提供的代码再次试验了,非常理想。真心感谢您的帮助!谢谢!!!
作者: keen 时间: 2009-9-17 10:53 标题: 回复 6楼 的帖子
问题解决,请主动给标题添加【已解决】会得到管理层的加分奖励!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |