本帖最后由 好基友 于 2025-2-12 00:32 编辑
论坛里面清理垃圾的工具很多,但是基本都是不支持命令行静默清理的。目前在用的工具只有CCleaner跟Wise Care 365支持。
例如CCleaner,添加到任务计划程序,触发器选择每天3点运行,添加参数:/AUTOSC,就能实现定时后台自动清理垃圾。
CCleaner还是支持自定义文件夹的,这点很不错。
还有Wise Care 365,同样添加到任务计划程序,触发器选择每天3点运行,添加参数:/scan /clean,也能实现定时自动清理垃圾。
还有论坛刚出的一款小工具,配置好路径好,打开就能直接清理垃圾,也能配合任务计划程序清理。
文件夹或者目录删除小程序
https://www.52pojie.cn/thread-1996615-1-1.html
(出处: 吾爱破解论坛)
但是感觉都没有批处理方便,论坛也没有批处理删除文件夹垃圾的。于是我让DeepSeek写了一个。
主要功能就是删除多个指定文件夹及子文件夹的指定类型文件。我是要用来每天清理微信跟企业微信图片的。
自动扫描清理.rar
(1.57 KB, 下载次数: 17)
蓝奏云:https://wwmv.lanzn.com/iqsxL2nj3ppi
123云盘:https://www.123865.com/s/1uiA-tjZlA
需要修改的地方:
REM ============== 配置区域 ==============
set "folders=D:\企业微信数据\WXWork;D:\微信数据\WeChat Files" 文件夹路径修改为自己的,多个文件夹用“;”号隔开
set "file_types=.jpg .png .mp4 .dat" 文件类型修改为自己需要的类型
set "file_name_patterns=" REM 支持通配符*和? 动态匹配文件名模式,不需要的可以不管
REM ============== 配置结束 ==============
if !update_counter! geq 10 ( 进度条的刷新频率,可以修改为自己需要的,我是设置每删除10个文件刷新一次进度条
运行后的图片:
新建文本,复制到文本,另存为→保存类型选择所有文件→编码选择ANSI
[Asm] 纯文本查看 复制代码 @echo off
chcp 936 >nul
setlocal enabledelayedexpansion
REM ============== 配置区域 ==============
set "folders=D:\企业微信数据\WXWork;D:\微信数据\WeChat Files"
set "file_types=.jpg .png .mp4 .dat"
set "file_name_patterns=" REM 支持通配符*和?
REM ============== 配置结束 ==============
echo 企业微信缓存清理工具
echo 支持格式:%file_types%
echo 文件名模式:%file_name_patterns%
echo ====================================
set "total_success=0"
REM 处理多个文件夹路径
for %%a in ("%folders:;=" "%") do (
set "current_folder=%%~a"
call :ProcessFolder
)
echo 所有清理操作已完成
echo 共清理文件总数:!total_success! 个
echo 建议:清理完成后重启企业微信客户端
timeout /t 10
goto :EOF
:ProcessFolder
echo.
echo 正在处理目录:!current_folder!
echo ----------------------------------------
if not exist "!current_folder!\" (
echo 目录不存在:!current_folder!
echo ----------------------------------------
goto :EOF
)
set "temp_file=%temp%\wx_cache_clean_%random%%random%.tmp"
echo 正在搜索文件...
dir /s /b /a - d - h - s "!current_folder!\*" > "!temp_file!" 2>nul
if %errorlevel% neq 0 (
echo 搜索文件时出现错误,错误代码:%errorlevel%
call :DeleteFile "!temp_file!"
goto :EOF
)
REM 生成文件类型正则表达式模式
set "file_pattern="
for %%t in (%file_types%) do (
set "ext=%%~t"
set "ext=!ext:~1!" REM 去除前导点
if not "!ext!"=="" (
set "file_pattern=!file_pattern! \.!ext!$"
)
)
set "file_pattern=!file_pattern:~1!" REM 去除开头的空格
findstr /i "%file_pattern%" "!temp_file!" > "!temp_file!_filtered"
if %errorlevel% neq 0 (
echo 过滤文件时出现错误,错误代码:%errorlevel%
call :DeleteFile "!temp_file!"
goto :EOF
)
set "file_count=0"
for /f "usebackq delims=" %%F in ("!temp_file!_filtered") do set /a file_count+=1
if !file_count! equ 0 (
echo 未找到匹配文件
call :DeleteFile "!temp_file!"
call :DeleteFile "!temp_file!_filtered"
goto :EOF
)
echo 发现 !file_count! 个匹配文件,开始自动清理...
set "success=0"
set "processed=0"
set "update_counter=0"
set "list_file=%temp%\file_list_%random%.tmp"
copy "!temp_file!_filtered" "!list_file!" >nul
for /f "usebackq delims=" %%F in ("!list_file!") do (
set "full_path=%%F"
set "name=%%~nF"
set "name_match=0"
if defined file_name_patterns (
for %%P in (%file_name_patterns%) do (
call :MatchPattern "!name!" "%%P"
if !errorlevel! equ 0 set "name_match=1"
)
) else (
set "name_match=1"
)
if !name_match! equ 1 (
call :DeleteFile "!full_path!"
if !errorlevel! equ 0 (
set /a success+=1
set /a total_success+=1
)
)
set /a processed+=1
set /a "percent=(processed*100)/file_count"
set /a update_counter+=1
if !update_counter! geq 10 (
call :UpdateProgressBar !percent! !processed! !file_count!
set "update_counter=0"
)
)
if !update_counter! gtr 0 (
call :UpdateProgressBar !percent! !processed! !file_count!
)
call :DeleteFile "!list_file!"
echo.
echo ----------------------------------------
echo 成功清理 !success! 个文件
call :DeleteFile "!temp_file!"
call :DeleteFile "!temp_file!_filtered"
echo ====================================
goto :EOF
:MatchPattern
setlocal enabledelayedexpansion
set "name=%~1"
set "pattern=%~2"
set "regex_pattern=!pattern:*=.*!"
set "regex_pattern=!regex_pattern:?=."
echo !name! | findstr /i /r "^!regex_pattern!$" >nul
exit /b !errorlevel!
:DeleteFile
if exist "%~1" del "%~1" 2>nul
exit /b
:UpdateProgressBar
setlocal
set "percent=%~1"
set "current=%~2"
set "total=%~3"
set /a "filled=percent/4"
set "progress_bar=["
for /l %%i in (1,1,25) do (
if %%i leq !filled! (
set "progress_bar=!progress_bar!■"
) else (
set "progress_bar=!progress_bar! "
)
)
set "progress_bar=!progress_bar!] %percent%%% (!current!/!total!)"
echo 正在清理... !progress_bar!
endlocal
goto :EOF
|