如何清理文件名包含特定字符的文件夹及文件

如何清理文件名包含特定字符的文件夹及文件

请问各位大佬
OS是WIN10

那有没有工具或者是批次档或者用什么方法可以完成
在特定的文件夹里清理子文件夹里所有
包含多个特定字符的文件夹及文件
先谢谢各位大佬了

p.s.因为下载时都会出现一些推广的文件及文件夹…要一个一个文件查找删除太麻烦…看有没有大神有辨法解决这问题

1、“清理”是什么意思?需要准确定义!
2、如果A文件夹本身含有特定字符,其下有B和C两个文档,其中C文档也含有特定字符,那么你需要如何“清理”?

1 Like

1、“清理”是什么意思?需要准确定义!

****就是直接删除文件…或者是文件夹

2、如果A文件夹本身含有特定字符,其下有B和C两个文档,其中C文档也含有特定字符,那么你需要如何“清理”?

****那就可能要在回收桶里看有没有误删…因为下载时都会出现一些推广的文件及文件夹…要一个一个文件查找太麻烦…看有没有辨法解决这问题

谢谢大佬您的回覆…感谢您…^^

其实小弟也写了个批次档但…可能还不完善…所以才发文问问各位大神们看有没有更好的方法

@echo off
setlocal enabledelayedexpansion
chcp 65001
set "rootPath=.\"
set "searchStrings=100TB免费游戏仓库 原创文宣 尊享区内容一览 原创文宣 防止走失 2048免翻墙地址发布 2048综合论坛最新地址 防丢失 手机端新用户保存可领 更多剧集打包下载请访问"

for %%s in (%searchStrings%) do (
    for /r "%rootPath%" %%i in (*%%s*) do (
        if exist "%%i" (
            del "%%i" /F /Q
        )
    )

    for /d /r "%rootPath%" %%i in (*%%s*) do (
        if exist "%%i" (
            rmdir "%%i" /S /Q
        )
    )
)

endlocal

看不懂,A文件夹本身就含有特定字符,那么删不删除A文件夹?如果删除了A文件夹,其下的B文档是正常文档,是否也要随之删除?还是如何处理?

1 Like

b文档还是要的…但这就是…小弟烦恼的地方…变成只能删除文件…文件夹就不删除了…

所以在小弟的批次档里还是有问题的…这a文件夹…跟b文件…这个地方要如何处理

需要针对性处理的所谓“特殊字符”,是哪些字符?还是说需要你另行输入定义?

如果不需要保持文件夹结构,那么只需要使用everything搜索指定文件夹下所有文件,再使用正则排除掉所有含有特定字符的文档,剩下的就是合规的文档了,非常简单的。
image
如上图,就是排除了指定文件夹下,包含“lua”、“toc”、“xml”、“blp”等字符的所有文件。这样剩下的展示出来的文件就都是合规的,全选拷贝到新文件夹即可。

复杂的是,必须要保持文件夹结构,那就要明确处理规则,如我上面所说的那种情况,这个A文件夹你删还是不删,以及A文件夹下面的B文档如何保留等等。

1 Like

everything +1

搜索结果里也能目视一下保留不想删的。。

1 Like

还是谢谢大佬了…这个方法…我也试过…但…还不是很完美…谢谢您了

虽然你的问题有可能是一个X-Y问题,但你可以考虑删除所有文件名包含特定字符的文件,然后检查是否存在空目录,递归删除所有空目录,然后再检查是否存在包含特定字符串的文件夹,考虑是否需要重命名

2 Likes

至于文件搜索工具,我要推荐fd[GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find'],使用足够简单。

2 Likes

给个具体要求,我给你写一个python脚本

1 Like

大佬就是每次下载时都会有一些推广的文件及文件夹(类似u3c3…1024…98堂[原色花堂…草榴社区…av20s8…的垃圾文件但这些字符可能会一直添加因为推广的文件会一直改变所以有点类似ReNamer的移除规则…)…要一个一个文件查找太麻烦…看有没有辨法解决这问题
但是…母文件夹里含有不能删除都文件时…就不删除母文件夹


QQ截图1130213200828

差不多这个逻辑吗
检查文件->符合匹配规则->删除该文件
检查文件夹->符合匹配规则->1.内部文件符合匹配规则,则全部删除 2.内部文件不符合文件规则,移动至文件夹外 ->删除该文件夹

1 Like

检查文件夹->符合匹配规则->
1.内部文件符合匹配规则,则全部删除 “包含文件夹也一并删除”
2.内部文件不符合文件规则,移动至文件夹外 → “不” 删除文件夹 “也不删除文件”

谢谢大佬了

鄙人认为您这个逻辑可以再调整一下:

  • 1 遍历所有文件,判断文件名是否符合筛选条件:
    • 1.1 是,删除
    • 1.2 否,保留
  • 2 遍历所有文件夹,判断文件名是否符合筛选条件:
    • 2.1 是,判断是否为空文件夹:
      • 2.1.1 是,删除文件夹
      • 2.1.2 否,重命名文件夹,将文件夹名中符合筛选条件的部分去除(这一部分要考虑是否会出现重名情况)
    • 2.2 否,保留
1 Like

先感谢大佬了

  • 2 遍历所有文件夹,判断文件 文件夹 名是否符合筛选条件:
    • 2.1 是,判断是否为空文件夹:

      • 2.1.1 是,删除文件夹
      • 2.1.2 否,不需重命名文件夹
    • 2.2 否 筛选文件夹下文件

      • 2.2.1 是,删除文件
      • 2.2.2 否,不需删除 文件夹

鄙人认为您的逻辑漏了一种情况:如果一个文件夹的名符合筛选条件,其下文件也全部符合筛选条件,那么:

  • 判断2,不符合,进入 2.2 路径
  • 判断2.2,符合,进入 2.2.1 路径,清除全部文件,成为空文件夹

那么,这样就会留下一个名称符合筛选规则的空文件夹,这个文件夹要怎么删除?

因此,鄙人认为可以让这个程序执行两次,在第二次循环中清除上文提到的那种空文件夹。

1 Like

谢谢这样就完美了…感谢大佬
但这要用什么方法完成… :joy: