标题: [文件操作] [已解决] 求高手,文件批量复制时先比较大小再决定是否覆盖 [打印本页]
作者: nwj@tom.com 时间: 2014-11-28 10:17 标题: [已解决] 求高手,文件批量复制时先比较大小再决定是否覆盖
本帖最后由 nwj@tom.com 于 2014-11-29 15:52 编辑
我下载了一些文件,想把2个不同的文件夹合并到一起。遇到重名文件时,我需要保留体积较小的文件。 当把一个文件夹里面的所有文件移动到另外一个文件夹,遇到相同的名字的文件的时候,自动选择保留小文件。假设文件夹是 F:\A 复制到F:\B
几万个文件一个个判断太麻烦了,所以,曾经在网上找到过一个简单的批处理文件,使用了很多年。近来升级电脑,没注意丢失了这个小小的却万分重要的文件,因此,求各位大神,能否帮忙!
谢谢先!
补充:在网上找到一下这个类似的批处理文件,但不太符合我的要求,请哪位高手帮我修改一下:
”打开记事本程序把下面代码贴进去,修改目录名后,保存到任意位置后缀为.bat双击运行:
@echo off&color f1
:: 假定把d:\a复制到e:\b
set d1=d:\a
set d2=e:\b
cd/d "%d1%"
echo.正在复制,请等候...
for /f "delims=" %%i in ('dir/b/a-d *.txt')do (
if not exist "%d2%\%%i" (copy "%%i" "%d2%\">nul)else (
for /f "delims=" %%j in ('dir/b/a-d "%d2%\%%i"')do (
if %%~zi gtr %%~zj copy/y "%%i" "%d2%\">nul)
))
echo/echo 复制完毕 &ping /n 3 127.1>nul“
作者: DAIC 时间: 2014-11-28 10:53
xcopy /d 可以吗?它可以实现新文件覆盖旧文件
作者: nwj@tom.com 时间: 2014-11-28 16:44
回复 2# DAIC
如何实现:先比较大小,再自动判断是否覆盖?
作者: apang 时间: 2014-11-28 22:02
- @echo off & setlocal enabledelayedexpansion
- set "srcDir=F:\A"
- set "dstDir=F:\B"
- set "s=00000000000000000000"
- pushd "%srcDir%\"
- for /f "delims=" %%a in ('dir /a-d /b') do (
- if exist "%dstDir%\%%a" (
- set "sz1=!s!%%~za"
- for %%b in ("%dstDir%\%%a") do set "sz2=!s!%%~zb"
- if "!sz1:~-20!" lss "!sz2:~-20!" move "%%a" "%dstDir%\"
- ) else move "%%a" "%dstDir%\"
- )
- pause
复制代码
作者: nwj@tom.com 时间: 2014-11-29 01:09
真是高手啊,验证了一下,比原来那个好用多了!真是佩服的五体投地!!万分感谢
作者: CrLf 时间: 2014-11-29 01:23
回复 5# nwj@tom.com
那给 apang 大师加分感谢呗~顺便把帖子标题前面加个[已解决]
作者: nwj@tom.com 时间: 2014-11-29 15:53
想给16分全给,怎么不行?对不起了,大师
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |