加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – Robocopy,不要覆盖现有文件,而是复制已更改的/新文件

发布时间:2020-12-14 00:28:34 所属栏目:Windows 来源:网络整理
导读:是否可以镜像这两个目录而不用新/更改/删除的文件覆盖目标目录中的文件.像快照一样的东西. 例: 将包含所有文件和子目录的源目录复制到目标目录,但是如果目标目录包含,例如,在源目录中更改了文件A.xls和A.xls,则复制A.xls但将前一个A保留在目标中目录也是如
是否可以镜像这两个目录而不用新/更改/删除的文件覆盖目标目录中的文件.像快照一样的东西.

例:
将包含所有文件和子目录的源目录复制到目标目录,但是如果目标目录包含,例如,在源目录中更改了文件A.xls和A.xls,则复制A.xls但将前一个A保留在目标中目录也是如此.要保留以前的文件,可以将日期戳或计数器添加到文件名中.

复制后的示例:
SomeDirectory
| –A.xls
| –A_20120701.xls
| –A_20120920.xls

谢谢.

不,使用Robocopy是不可能的.使用Robocopy镜像文件夹路径将删除目标中的文件(如果源中不再存在).您可以确保不使用旧版本覆盖文件,但在复制过程中无法保留旧版本/重命名.

我编写了一个命令脚本/批处理文件,用于复制已修改的文件,但会根据脚本运行的日期创建树结构

例如我的树是一个特定的文件.

c:_archive201209
                    23
                        0930
                             Todays notes.txt
                        1145
                             Todays notes.txt
                    24
                        1000
                             Todays notes.txt

如果您觉得有用,我可以发布该脚本的示例.

由于受欢迎的需求,请在下面找到我的基本备份脚本.

@echo off
cls
rem parse the output of the date /t command to create a date in the format yyyymmdd,and also remove the delimiter (/)
rem  store the results in environment variables
for /F "tokens=1,2,3,4 delims=/ " %%i IN ('date /t') do SET Z_DATE=%%k%%j%%i 
for /F "tokens=1,4 delims=/ " %%i IN ('date /t') do SET Z_YEAR=%%k
for /F "tokens=1,4 delims=/ " %%i IN ('date /t') do SET Z_MONTH=%%j
for /F "tokens=1,4 delims=/ " %%i IN ('date /t') do SET Z_DAY=%%i

echo date %Z_DATE%
echo year %Z_YEAR%
echo month %Z_MONTH%
echo day %Z_DAY%

rem parse the output of the time /t command to remove the delimeter (:)
rem  store the result in an environment variable
for /f "tokens=1,2 delims=:. " %%i IN ('time /t') do SET Z_TIME=%%i%%j

echo time %Z_TIME%
rem change the colour to a nice deep green on black.
color 02
::-------------------------

@echo on
xcopy "c:MyFiles*.*" "C:MyArchiveByDate%Z_YEAR%%Z_MONTH%%Z_DAY%%Z_TIME%%~p1%~n1" /ksymhr
@if @@ERRORLEVEL==1 SET Z_BACKUP_ERROR_FLAG=1

Goto End

::---------------------------------------------------------------------------
:NotifyUser
echo.
echo An error occurred during the backup.
echo.
pause

::---------------------------------------------------------------------------
:End

echo %Z_DATE%
echo %Z_TIME%
time /t

rem Clear out the environment variables
SET Z_DATE=
SET Z_TIME=
SET Z_BACKUP_ERROR_FLAG=

如果您对此脚本有任何疑问(我从主备份脚本中快速填写,并且未对其进行彻底测试),请在我的Gmail帐户中通过主题行“服务器故障备份脚本查询”向我发送电子邮件.如果您可以在不问我的情况下计算我的Gmail地址,那么我很乐意为您提供帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读