Board logo

标题: [文件操作] 复制时重名文件处理 [打印本页]

作者: jjyf0208    时间: 2009-9-16 11:26     标题: 复制时重名文件处理

我有A、B两个文件夹,其中存在很多同名的文件,各文件大小一样或不一样。
现在,希望合并文件夹(把A内文件复制到B内),如文件名一样,则用大的替换掉小的,否则不替换。
请问,代码如何编写。我试验了很多,均不行。
在此先行谢谢指导!!
作者: Lumiere    时间: 2009-9-16 12:35

  1. @echo off&setlocal enabledelayedexpansion
  2. rem suppose A, B and this bat file are under the same path
  3. cd A
  4. for %%a in (*.*) do (
  5.        if not exist "..\B\%%a" (copy "..\A\%%a" "..\B" ) else (
  6.           set size1=%%~za&cd "..\B"
  7.           for /f %%i in ('dir /a /b %%a') do set size2=%%~zi
  8.           if !size1! gtr !size2! copy "..\A\%%a" "..\B"
  9.           cd "..\A"
  10. ))
  11. 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