标题: [文本处理] [已解决]两个文件夹,N个文本文件,请问批处理如何实现只同步较大的文本文件 [打印本页]
作者: gannh 时间: 2014-1-15 19:42 标题: [已解决]两个文件夹,N个文本文件,请问批处理如何实现只同步较大的文本文件
本帖最后由 gannh 于 2014-5-31 15:06 编辑
现有两个文件夹,A和B。其中A和B文件夹中都有大量的,名称相同的文本文件。现想将A文件夹较大的文件同步到B文件夹下,请问各位大神有批处理命令可以实现吗?试过寻找很多工具都不行,只能在这里求助了,谢谢!
作者: battab 时间: 2014-1-15 20:25
回复 1# gannh
请明确说明较大的文件大到什么程度?
作者: cjiabing 时间: 2014-1-15 21:01
系统不是有一个“公文包”嘛???点右键“新建”就看见了!~
作者: gannh 时间: 2014-1-15 21:19
在1M,2M...不定,就是有些文件A文件夹的比B文件夹同名的要大,现在只想复制这些文件
作者: netbenton 时间: 2014-1-15 23:18
- @echo off
- set /p path1=输入A文件夹:
- set /p path2=输入B文件夹:
- for %%a in (%path1%\*.*) do (
- for /f "tokens=*" %%b in ("%path2%\%%~nxa") do (
- if "%%~za" gtr "%%~zb" copy "%%~fa" "%path2%" /y
- )
- )
-
- pause
复制代码
注意:
1,文件夹及路径不能含有空格,不然出错
2,有更新时会不会提示,直接覆盖。若需要提示,则把/y参数去掉
作者: terse 时间: 2014-1-15 23:30
这里加“会不会字符比较
作者: terse 时间: 2014-1-16 00:04
可处理空格- @echo off&setlocal enabledelayedexpansion
- set /p path1=输入A文件夹:
- set /p path2=输入B文件夹:
- for /L %%i in (1,1,100) do set "t=!t!0!"
- cd /d "%path1%\"
- for %%i in (*.*) do (
- if exist "%path2%\%%~nxi" (
- for %%j in ("%path2%\%%~nxi") do (
- set "az=!t!%%~zi"
- set "bz=!t!%%~zj"
- if "!az:~-100!" gtr "!bz:~-100!" copy "%%i" "%path2%"
- )
- )
- )
- pause
复制代码
作者: gannh 时间: 2014-1-16 12:18
回复 7# terse
问题解决了, 谢谢terse哥,太感谢了,
作者: gannh 时间: 2014-1-16 16:00
再请教terse哥,上面代码可否做个输出,统计显示复制了哪些文件和一共复制了多少个文件?还有的是上面代码:in (1,1,100),是什么含义?谢谢指教!
作者: DAIC 时间: 2014-1-16 16:22
还有的是上面代码:in (1,1,100),是什么含义?
for循环
从1到100执行100次
请看教程:
http://www.bathome.net/thread-2189-1-1.html
作者: gannh 时间: 2014-1-16 16:28
回复 10# DAIC
谢谢DAIC指教
作者: terse 时间: 2014-1-16 16:35
回复 9# gannh - @echo off&setlocal enabledelayedexpansion
- set /p path1=输入A文件夹:
- set /p path2=输入B文件夹:
- for /L %%i in (1,1,100) do set "t=!t!0!"
- cd /d "%path1%\"
- for %%i in (*.*) do (
- if exist "%path2%\%%~nxi" (
- for %%j in ("%path2%\%%~nxi") do (
- set "az=!t!%%~zi"
- set "bz=!t!%%~zj"
- if "!az:~-100!" gtr "!bz:~-100!" (
- xcopy /f /y "%%i" "%path2%"
- set /a n+=1
- )
- )
- )
- )
- echo 共复制文件 !n! 个
- pause
复制代码
这里的变量T是补位字符 后面同时截取100 以保证比较的字符相同长度
作者: gannh 时间: 2014-1-16 21:51
回复 12# terse
再次感谢terse哥指教,谢谢
作者: netbenton 时间: 2014-1-17 00:48
回复 6# terse
那就去掉“”,加个 @ ,改成这样吧:- if %%~za gtr %%~zb @ copy "%%~fa" "%path2%" /y
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |