环境
E盘scan文件夹下有IT、HT、SCM、经管等部门文件夹,各部门文件夹下存放着各自的扫描文件(PDF)、表格等内容,因是临时存放,所以需设定定时删除任务
需求
结合windows任务计划,每天定时备份scan文件夹(以当前日期为备份文件名),并删除scan下所有文件(不删除scan下的文件夹,即保留IT、HR、SCAM、经管等文件夹)
实现
@echo off
set zip7=C:\Program Files\7-Zip\7z.exe
set Save=E:\scan-backup
set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2%
set zipfile=E:\scan
"%zip7%" a -tzip "%Save%\%curdate%.zip" "%zipfile%" -mx=5 -xr!.svn
forfiles /p "%Save%" /m *.zip -d -7 /c "cmd /c del /f @path"
del /f/s/q/a E:\scan\*.*
echo
代码详解
指定7z压缩程序路径
set zip7=C:\Program Files\7-Zip\7z.exe
设置压缩包保存路径(不能有中文名)
set Save=E:\scan-backup
当天日期,备份文件名
set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2%
设置要打包压缩的文件夹
set zipfile=E:\scan
调用备份命令, -xr!.svn过滤.svn文件夹
"%zip7%" a -tzip "%Save%\%curdate%.zip" "%zipfile%" -mx5 -xr!.svn
删除超过7天的备份
forfiles /p "%Save%" /m *.zip -d -7 /c "cmd /c del /f @path"
删除E:\scan\下任何名字的任何类型文件
del /f/s/q/a E:\scan\*.*
a表示add命令,即新建一个压缩文件,该压缩文件存放在当前目录下
-mx表示压缩等级5-9,0表示不压缩
-xr!.svn 表示排除svn目录,7zip排除目录的路径里不能用当前目录 . ,如 -xr!./.svn,会过滤失败, .svn 还会压缩进去
友情提示
为避免造成不必要的困扰,批处理文件最好免去中文注释,最终效果展示如下: