中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 07:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创]同步文件 查看 768 回复 1
楼 主 [原创]同步文件 发表于 2007-02-09 13:06 ·  中国 浙江 杭州 华数
初级用户
积分 116
发帖 28
注册 2007-01-03 05:21
19年会员
UID 75318
性别 男
状态 离线
同步源文件到多个目标,但不能解决目录同步问题

目录同步见:请教如何检测二个文件夹中的文件如有不同或没有就复制


@Echo OFF
::
:: BatName: syncfile.bat
:: Version: 0.1
:: Function: 根据文件修改日期及大小同步文件
::
:: Usage: syncfile sourcefile targetfile
::
:: Code by SpikeKnox 2007.01.29 Knox1@163.com
::

rem Show help
If == (Type "%~f0" | findstr "^::" && Goto :EOF)
If == (Type "%~f0" | findstr "^::" && Goto :EOF)

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

:Cmp
If == 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 == 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 "^"') DO Set "sourceTag=%%i %%j" && Set sourceSize=%%k
For /f "tokens=1,2,3" %%i IN ('dir /T:W %target% ^| findstr "^"') 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 )

2 发表于 2007-02-09 14:22 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
xcopy /d:m-d-y

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