windows检测根目录的几种类型的文件,备份移动到其他目录

定期检查项目目录,或者日志目录,或者附件目录,移动到另一个目录去,再改造一下也可以增加频率做临时的实时同步用,运行的时候可以加>>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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值