bat脚本自动备份文件夹失败

问题遇到的现象和发生背景

写了个脚本,想定时自动备份文件夹,但是运行时提示文件被占用,怎么修改代码来备份被占用中的文件或者通过其他方式来实现备份被占用的文件

问题相关代码,请勿粘贴截图

代码如下:
@echo off
set AAA=%date:0,4%-%date:5,2%-%date:8,2%-%time:0,2%
xcopy "G:\fshefk" "G:\shiyan%AAA%" /e/I/d/h/r/y
exit

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你只要不是想备份数据库文件之类的,其他文件一般不会阻止你拷贝
但是如果你的目标文件正被打开,那肯定是不行的

首先,关于文件被占用:在window系统上,如果程序以独占的方式打开文件,也就是调用Windows API CreateFile的时候的参数dwShareMode指定为0,其他程序(当然包括xcopy/robocopy等),一般是无法打开这个文件的,无法打开肯定也无法读取文件。

强制杀死进程的方式并不推荐,因为会导致数据丢失,只能采用其他一些方式,比如写内核驱动等方式。

还有一种比较安全的方式,是采用卷复制的方式,它会将你的当前磁盘做一个只读快照,然后从快照中读取文件,这类的程序也有一些,有一个是专用用来做备份的,和你的需求类似,可以考虑用一下

https://github.com/dbolton/SolidBackup

它是GUI程序,支持任务计划等特性,做备份的基本需求都满足

它的内部使用的核心程序是shadowspawn ( https://github.com/candera/shadowspawn ),是开源的,如果想折腾可以搞一下