如何在 Windows 中递归删除名称与模式匹配的所有文件或文件夹?

如何在 Windows 中递归删除名称与模式匹配的所有文件或文件夹?

对于文件示例,我想删除所有匹配 .+?[a-f0-9]{4}.html 的文件(即以四位十六进制结尾的任何 html 文件)。因此 paged47c.html 将被删除,但 page.html 将保留。

以文件夹为例,我想删除所有匹配 .+?[AZ]+ 的文件夹(即任何包含大写字母的文件夹)。因此 some-folderSE93_89ds/ 将被删除,但 some-folder/ 会保留。

我很少使用命令行,但我可以找到一个涉及“del”的示例来为我工作。或者,是否有一个简单的 Windows GUI 程序可以执行此操作?

答案1

我想说,最简单的方法,虽然不是直接的路线,是执行你的专门dir命令(你可以使用/b和/s切换来做到这一点只是列出文件名并递归目录)并将其重定向到文件。在记事本中打开它(或插入您最喜欢的编辑器),搜索并替换以将“del”添加到行首,将其保存为 mydel.bat,然后执行。

举个例子:

dir /s /b *.html > mydel.bat
notepad mydel.bat
call mydel.bat

答案2

在 powershell 中使用以下行:

Get-ChildItem -Recurse C:\| where { ! $_.PSIsContainer } | Where-Object {$_.Name -match ".+?[a-f0-9]{4}.html"}

用于文件盒,用于文件夹盒使用:

Get-ChildItem -Recurse C:\| Where-Object { $_.PSIsContainer }| Where-Object {$_.Name -match ".+?[A-Z]+"}

将它们都存储在变量中,然后使用Remove-Item

警告:在我的命令中,我使用根目录C:\作为源位置。如果您确实想将其输出管道化Remove-Item并以管理员身份运行,那么这是一个坏主意。至少执行以下操作之一:

  1. 特别排除Windows
  2. 使用what-if标志
  3. 不要以管理员身份运行(如果您匹配的文件不在受保护的目录中,那就没关系了)
  4. 不要逃跑C:\,而是从更安全的地方逃跑

相关内容