[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 复制时重名文件处理

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

  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 编辑 ]
1

评分人数

    • keen: 热心帮助!PB + 11
Still with wax

TOP

回复 2楼 的帖子

首先,感谢“Lumiere”的热心帮助!!
按照说明,把A、B文件夹放在同一路径下,执行了提供的代码,提示:“已复制         0 个文件。文件无法自身复制。”
不知何故,能否帮助再看一看。

TOP

文件无法复制自身是小事,其他文件也无法复制么?那个加一个2>nul就能过滤掉,应该不影响其他文件拷贝的。是一个文件都没有复制么?
Still with wax

TOP

回复 3楼 的帖子

写得快,有些小错误,现在已经纠正,并且也测试过,没问题。
Still with wax

TOP

回复 5楼 的帖子

已经按照“Lumiere”提供的代码再次试验了,非常理想。真心感谢您的帮助!谢谢!!!

TOP

回复 6楼 的帖子

问题解决,请主动给标题添加【已解决】会得到管理层的加分奖励!
(*^_^*)

TOP

返回列表