1、清理无用的备份文件(按最新文件个数保留)
适用于特大备份文件
- folder包含1级别目录
rem 需要清理的目录,支持多个文件夹英文逗号隔开,斜线\结尾
chcp 65001 >nul
setlocal enabledelayedexpansion
set "folder=F:\zlsc\处理脚本\测试处理\,F:\zlsc\处理脚本\测试处理2\"
set "filePattern=*.psc"
set "maxFiles=10"
rem 建议修改为绝对路径
set "logFile=logfile.txt"
echo 获取目录下的所有文件,并按修改日期排序 %folder% >> %logFile%
echo ============= 正在按最新文件个数清理备份文件,请稍等...... %date% %time% ============== >> %logFile%
for %%F in (%folder%) do (
for /d %%i in (%%F*) do (
echo 遍历文件夹: %%i >> %logFile%
cd /d %%i
set n=0
for /f "delims=" %%a in ('dir /a-d-h /b /o-d "%filePattern%"') do (
echo 遍历文件: %%~a >> %logFile%
if !n! geq %maxFiles% del "%%~a"
set /a n+=1
)
)
)
echo ============= 按最新文件个数清理备份文件,完成! %date% %time% ============== >> %logFile%
exit
*folder不包含目录,直接为文件
rem 需要清理的目录,支持多个文件夹英文逗号隔开,斜线\结尾
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "folder=F:\zlsc\处理脚本\测试处理\1,F:\zlsc\处理脚本\测试处理\2"
set "filePattern=*.psc"
set "maxFiles=1"
set "logFile=logfile.txt"
echo 获取目录下的所有文件,并按修改日期排序 %folder% >> %logFile%
for %%F in (%folder%) do (
cd /d %%F
set n=0
for /f "delims=" %%a in ('dir /a-d-h /b /o-d "%filePattern%"') do (
echo 遍历文件: %%~a >> %logFile%
if !n! geq %maxFiles% del "%%~a"
set /a n+=1
)
)
exit
2、清理无用的备份文件(按最新文件天数保留)
适用于非特大备份文件
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
set "logFile=F:\zlsc\处理脚本\logfile.txt"
echo ========================= 正在按最新文件天数清理备份文件,请稍等...... %date% %time% ========================= >> %logFile%
rem 需要清理的目录
set logFilePath=E:\MariaDB数据库备份\,E:\Log\,E:\Oracle数据库备份\
rem 只保留几天内的文件
set bak_dat=3
for %%F in (%logFilePath%) do (
rem 遍历所有文件夹
for /d %%i in (%%F*) do (
cd /d %%i
forfiles /p %%i /s /m *.psc /d -%bak_dat% /c "cmd /c del @path"
)
)
echo ========================= 按最新文件天数清理备份文件,完成! %date% %time% ========================= >> %logFile%
exit
网友评论