定期检查项目目录,或者日志目录,或者附件目录,移动到另一个目录去,再改造一下也可以增加频率做临时的实时同步用,运行的时候可以加>>a.log输出日志查看移动情况。
下面是用法:
1、下面代码保存为CleanFile.bat,修改最上面的几个参数为你想备份的目录,以及不想移动的某个文件名,还可以修改你想移动的某种文件类型
1)、备份目标目录
set "TARGET_DIR=D:\VHOST_BACKUP"
2)、根目录(多个根目录用空格分隔)
set "ROOT_DIRS=D:\nginx\html D:\nginx\htdoc"
3)、白名单文件(需要自己创建,列出文件名,一行一个,支持中文空格和特殊字符)
set "WHITELIST=D:\VHOST_BACKUP\WHITELIST.txt"
4)、要备份的文件类型
set "FILE_TYPES=txt zip rar tar.gz tar xls xlsx doc docx"
chcp 65001
@echo off
setlocal enabledelayedexpansion
:: 备份目标目录
set "TARGET_DIR=D:\VHOST_BACKUP"
:: 根目录(多个根目录用空格分隔)
set "ROOT_DIRS=D:\nginx\html D:\nginx\htdoc"
:: 白名单文件(列出文件名,不包括路径)
set "WHITELIST=D:\VHOST_BACKUP\WHITELIST.txt"
:: 要备份的文件类型
set "FILE_TYPES=txt zip rar tar.gz tar xls xlsx doc docx"
:: 获取当前日期
set "DATE=%DATE:~3,4%-%DATE:~8,2%-%DATE:~11,2%"
:: 检查白名单文件是否存在
if not exist "%WHITELIST%" (
echo %DATE% %time%白名单文件 %WHITELIST% 不存在,跳过处理白名单。
) else (
echo %DATE% %time%使用白名单文件 %WHITELIST%。
)
:: 检查目标目录是否存在,如果不存在则创建
if not exist "%TARGET_DIR%" (
echo 目标目录不存在,创建.."%TARGET_DIR%"
mkdir "%TARGET_DIR%"
)
:: 遍历每个根目录
for %%R in (%ROOT_DIRS%) do (
set ROOT_DIR=%%R
set ROOT_DIR_NAME=%%~nR
set DEST_DIR=%TARGET_DIR%\%DATE%\!ROOT_DIR_NAME!
echo %DATE% %time% 备份目录 !DEST_DIR!
:: 创建以当前日期和根目录名称命名的目标文件夹
if not exist "!DEST_DIR!" (
mkdir "!DEST_DIR!"
)
echo %DATE% %time%正在处理目录: !ROOT_DIR!
:: 遍历根目录下的当前目录的文件,如果要查询里面的子目录,可以换一种写法
for /F "delims=" %%F in ('dir "!ROOT_DIR!" /B') do (
set "FILE_NAME=%%~nxF"
set "EXT=%%~xF"
:: 去掉扩展名前的点,便于大小写匹配
set "EXT=!EXT:~1!"
echo %DATE% %time% 1、正在扫描文件:------------------ %%F---------------------
echo %DATE% %time% 2、文件名称: !FILE_NAME! 扩展名: !EXT!
:: 检查文件是否在白名单中
set "IS_WHITELISTED=false"
if exist "%WHITELIST%" (
:: 逐行读取白名单文件
for /f "delims=" %%L in (%WHITELIST%) do (
:: echo %DATE% %time% 读取白名单文件:%%L
if /I "%%L"=="!FILE_NAME!" (
set "IS_WHITELISTED=true"
)
)
)
echo %DATE% %time% 3、白名单状态: !IS_WHITELISTED!
set "IS_TYPE=false"
:: 如果文件不在白名单并且扩展名是要备份的类型,移动文件
if "!IS_WHITELISTED!"=="false" (
for %%T in (%FILE_TYPES%) do (
set "FILE_TYPE=%%T"
::echo %DATE% %time% 4、检查文件扩展名: !EXT! 是否为 !FILE_TYPE!
if /I "!EXT!"=="!FILE_TYPE!" (
set "IS_TYPE=true"
echo %DATE% %time% 4、检查到%%F文件扩展名为 !FILE_TYPE!
echo %DATE% %time% 5、正在移动文件: !ROOT_DIR!\%%F 到 !DEST_DIR!
move "!ROOT_DIR!\%%F" "!DEST_DIR!\"
echo %DATE% %time% 6、文件已移动: %%F
)
)
if "!IS_TYPE!"=="false" (
echo %DATE% %time% end、%%F文件类型不匹配
)
echo %DATE% %time% ------------------ %%F文件处理完成--------------------
echo %DATE% %time%
echo %DATE% %time%
)
)
)
echo 备份文件结束
2、创建上面设置过的白名单文件(需要自己创建,列出文件名,一行一个,支持中文空格和特殊字符)
D:\VHOST_BACKUP\WHITELIST.txt
3、通过任务计划程序执行CleanFile.bat