我读过
根据修改日期以及源中新添加的文件使用批处理脚本从一个位置复制到另一个位置
和
但我找不到我想要的东西。
我想编写一个简单的脚本 (.BAT) 文件,仅将文件从本地 C:\ 驱动器复制(而不是移动)到安全的网络文件夹。由于本地驱动器上的文件偶尔会被修改,我想保留原始文件的新旧版本。有没有办法复制文件的所有先前版本,并自动在目标文件夹中为源文件夹中找到的新修改文件添加标识符(例如 _01、_02 等)?我们还设置了一个 Windows 事件,每 4 小时运行一次此脚本,以便在 PC 崩溃时捕获我们需要的一切。
由于我是新手,因此非常感谢任何帮助。
答案1
使用时间戳作为标识符怎么样?在我的德语 Windows 上
echo %date
返回 2016 年 11 月 25 日。
使用
set ARCHIVNAME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
在批处理文件中将使 ARCHIVENAME 看起来像这样:
2016-11-2016
第一个数字代表要取的索引,第二个数字代表子字符串的长度,例如 6,4 表示“从第六个字符(在“25.11.”之后)开始取四个字符(2016)。
现在您可以在复制命令中使用变量 ARCHIVENAME:
copy thefile.org otherFolder\%ARCHIVENAME%_thefile.org
这将导致文件名为“2016-11-25_thefile.org”。如果日期不够独特,您可以使用 %TIME% 执行相同的操作。
仅考虑一下略有不同的方法:
通过以下方式在网络共享上创建本地 Subversion 存储库使用 TortoiseSVN然后使用 svn 命令行检查修改后的文件的新版本。
答案2
SyncBack 可让你将文件备份到目标位置,同时保留以前的副本