如何编写批处理文件排除当日录制文件夹实现NVR视频备份?
批处理自动备份NVR录像(排除当日文件夹)
核心实现思路
- 自动生成当日日期(格式
MMDDYY,如013124),作为需要排除的目标文件夹名称 - 遍历NVR录像存储目录,复制除当日文件夹外的所有内容到网络共享目录
- 保留原备份逻辑的完整性参数,或改用更稳定的工具优化备份效果
批处理代码实现
方案1:基于xcopy的适配实现
@echo off setlocal enabledelayedexpansion :: 配置源目录与共享目录路径 set "sourceDir=C:\Users\profile\Videos\Recordings" set "targetDir=R:\Recordings" :: 获取当日日期并转为MMDDYY格式(适配中文系统日期格式) for /f "tokens=1-3 delims=/" %%a in ('echo %date%') do ( set "month=%%a" set "day=%%b" set "year=%%c" ) set "today=!month!!day!!year:~-2!" :: 遍历源目录文件夹,排除当日目录后执行备份 for /d %%d in ("%sourceDir%\*") do ( set "folderName=%%~nxd" if not "!folderName!"=="%today%" ( xcopy "%%d\*" "%targetDir%\!folderName!\" /I /F /E /C /Y ) ) endlocal echo 备份完成
方案2:改用robocopy(推荐,大文件备份更稳定)
robocopy支持更丰富的排除规则与错误处理,适合录像文件备份场景:
@echo off setlocal enabledelayedexpansion set "sourceDir=C:\Users\profile\Videos\Recordings" set "targetDir=R:\Recordings" :: 获取当日日期并转为MMDDYY格式 for /f "tokens=1-3 delims=/" %%a in ('echo %date%') do ( set "today=%%a%%b%%c:~-2!" ) :: 复制除当日文件夹外的所有内容 robocopy "%sourceDir%" "%targetDir%" /E /XD "%sourceDir%\%today%" /COPYALL /R:3 /W:5 /NP endlocal echo 备份完成
关键参数说明
/I:若目标目录不存在且复制对象为目录,自动创建目标目录/E:复制所有子目录,包含空目录/C:忽略复制错误,继续执行备份/Y:覆盖目标文件时不弹出确认提示robocopy的/XD:指定需要排除的目录robocopy的/COPYALL:复制文件的所有属性(权限、时间戳等)
后续配置步骤
- 将上述代码保存为
NVR_Backup.bat文件 - 通过Windows任务计划程序,设置任务在每日凌晨12:02自动运行该批处理
- 确保执行任务的系统账户拥有源目录的读取权限,以及共享目录的写入权限
内容的提问来源于stack exchange,提问作者Keith Howard
相关产品推荐
相关产品推荐

