求完全同步文件夹的bat批处理命令
文件有30G,每天拷贝时间太长,只能同步。
我找了一份bat,如果能在删除的时候加上删除同名但修改日期不同的文件也可以实现:
@echo off
Setlocal EnableDelayedExpansion
echo 正在删除E盘B文件夹多余的文件或文件夹
for /r D:\bbb %%a in (*) do (
set file=%%a
set file2=!file:D:\bbb\=!
if not exist "D:\aaa\!file2!" del /f/q "!file!"
)
echo 正在复制E盘B文件夹缺少的文件或文件夹
xcopy /t /e /y D:\aaa D:\bbb >nul 2>nul
for /r D:\aaa %%a in (*) do (
set file=%%a
set file2=!file:D:\aaa\=!
if not exist "D:\bbb\!file2!" copy /y "!file!" "D:\bbb\!file2!" >nul
)
pause 展开
@echo off & title 文件备份及比对工具 By 依梦琴瑶
::设置A目录路径
set A=E:\同步
::设置B目录路径
set B=S:\同步
::设置C目录路径
set C=E:\冗余
echo 说明:
echo 此工具在比对移动时,遇见同名文件,会在新文件名字后加上 _yyyymmddhhmmss
echo 格式的年月日时分秒。本工具同时会比对文件夹,重命名格式同文件一样。
echo,
echo 日志文件命名方式为 yyyymmddhhmmss.txt 格式的年月日时分秒.txt。
echo 日志内容中 -^> 前面的为原始文件路径,后面的为最终位置的路径。
echo,&echo,
setlocal enabledelayedexpansion
Call :GetABFullPath "%A%" "%B%" "%C%"
if exist "%SystemRoot%\System32\choice.exe" goto c2
echo,&set /p choice=请按 Y 键开始备份,按其它任意键(包括回车键)退出,回车确认:
if /i "%choice%"=="Y" goto start
exit
:c2
echo,&choice /c YN /n /m "按 Y 键开始备份,按 N 键退出:"
if errorlevel 2 exit
if errorlevel 1 goto start
exit
:start
set YMD=%date:~,10%
set YMD=%YMD:/=%
set YMD=%YMD:-=%
set HMS=%time:~,8%
set HMS=%HMS: =0%
set HMS=%HMS::=%
echo,&echo 正在备份中,请耐心等待。。。
(echo 从 "%B%" 备份到 "%A%" 中的文件/文件夹:
echo,
xcopy /s/e/y/d/h/f "%B%" "%A%")>"%C%\%YMD%%HMS%.txt"
ping 127.0.1 -n "2">nul
echo,&echo 正在比对中,请耐心等待。。。
(echo,&echo,&echo,
echo 从 "%A%" 移动到 "
同步的意思,就是没修改过的文件不复制.
robocopy,它能够删除目的目录中存在而源目录中不存在的文件.
robocopy,在复制文件时,它会忽略目的目录与源目录完全相同的文件,实现真正的同步.
robocopy,是多线程命令,处理大文件的速度不是XCOPY,COPY等命令可以相比的.
@echo off
set "SrcDir=D:\A"
set "DstDir=D:\B"
robocopy "%SrcDir%" "%DstDir%" /s /PURGE /J
pause
看起来很牛B,我试试,管用加分
https://freefilesync.org/