吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3195|回复: 18
收起左侧

[其他原创] 批处理删除多个文件夹指定文件

[复制链接]
好基友 发表于 2025-2-11 21:57
本帖最后由 好基友 于 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个文件刷新一次进度条

运行后的图片:
22.png

新建文本,复制到文本,另存为→保存类型选择所有文件→编码选择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





免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
HXlyf + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

52pojieluntan 发表于 2025-2-12 07:58
deepseek这么厉害了?
 楼主| 好基友 发表于 2025-2-12 09:18
52pojieluntan 发表于 2025-2-12 07:58
deepseek这么厉害了?

这个只是deepseek最基本的功能了,虽然我本人不懂代码,但是我可以提需要什么功能,让它写出来,最后改下后缀名,包括其它编程如何生成exe文件,它都会告诉你下载哪个编程软件,如何编译成exe文件出来。
rayzju 发表于 2025-2-12 07:54
wqscn 发表于 2025-2-12 08:22
能加个敲y确认吧,要是临时觉得删错可以回退或跳过
sktao 发表于 2025-2-12 08:36

此贴建议改为  deepseek制作程序的教程
 楼主| 好基友 发表于 2025-2-12 09:19
sktao 发表于 2025-2-12 08:36
此贴建议改为  deepseek制作程序的教程

好的,谢谢建议
 楼主| 好基友 发表于 2025-2-12 09:26
wqscn 发表于 2025-2-12 08:22
能加个敲y确认吧,要是临时觉得删错可以回退或跳过

本身里面是有一个按Y键确认的,但是我作为一个客服,每天要删除图片清理内存,所以这个功能我让deepseek去掉了,变成打开直接扫描清理。因为手机也保存有图片记录,可以手机查看。包括之前还有一个功能就是扫描指定文件夹所有文件用时多久,匹配文件用时多久,我都让deepseek删除掉了,包括保留N个小时内的文件,都让deepseek删除掉了,我需要主要的功能就是扫描清理指定类型的文件。
LaiLuo 发表于 2025-2-12 10:03
超级有用。这好需要。谢谢
anson1599 发表于 2025-2-12 11:04
生成文件列表是不是就为了现实进度条的功能?感觉没多大必要,还不如直接删除,用通配符也一样可以过滤文件
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-28 03:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表