中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]同步文件 上一主题 | 下一主题
SpikeKnox
初级用户




积分 116
发帖 28
注册 2007-1-3
状态 离线
『楼 主』:  [原创]同步文件

同步源文件到多个目标,但不能解决目录同步问题

目录同步见:请教如何检测二个文件夹中的文件如有不同或没有就复制
@Echo OFF
::
:: BatName: syncfile.bat
:: Version: 0.1
:: Function: 根据文件修改日期及大小同步文件
::
:: Usage: syncfile sourcefile targetfile [targetfile2 targetfile3 ...]
::
:: Code by SpikeKnox 2007.01.29 Knox1@163.com
::

rem Show help
If [%1]==[/?] (Type "%~f0" | findstr "^::" && Goto :EOF)
If [%1]==[] (Type "%~f0" | findstr "^::" && Goto :EOF)

If NOT EXIST %1 ( Echo Source File %1 NOT EXIST ) & Goto :EOF

:Cmp
If [%2]==[] Goto :EOF
Call :CmpByTimeAndSize %1 %2
If %ERRORLEVEL% EQU 0 (
        choice /m "%1 ==> %2"
        If %ERRORLEVEL% EQU 0 Copy /y %1 %2
)
Shift /2
Goto :Cmp

Goto :EOF
:CmpByTimeAndSize
If [%2]==[] Goto :EOF
rem %1 varName
Set source=%1
rem %2 value
Set target=%2

If NOT EXIST %target% ( Echo File %target% NOT EXIST & Set /a ERRORLEVEL=0 & Goto :EOF )

For /f "tokens=1,2,3" %%i IN ('dir /T:W %source% ^| findstr "^[0-9]"') DO Set "sourceTag=%%i %%j" && Set sourceSize=%%k
For /f "tokens=1,2,3" %%i IN ('dir /T:W %target% ^| findstr "^[0-9]"') DO Set "targetTag=%%i %%j" && Set targetSize=%%k

If "%sourceTag%"=="%targetTag%" ( Set /a ERRORLEVEL=1 ) Else ( Set /a ERRORLEVEL=0 )
If "%sourceSize%"=="%targetSize%" ( Set /a ERRORLEVEL=1 ) Else ( Set /a ERRORLEVEL=0 )


2007-2-9 13:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

xcopy /d:m-d-y

复制在指定日期或指定日期以后更改的文件。如果没有提供日期,只复制那些源时间比目标时间新的文件。

2007-2-9 14:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: