对于文件示例,我想删除所有匹配 .+?[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
并以管理员身份运行,那么这是一个坏主意。至少执行以下操作之一:
- 特别排除
Windows
- 使用
what-if
标志 - 不要以管理员身份运行(如果您匹配的文件不在受保护的目录中,那就没关系了)
- 不要逃跑
C:\
,而是从更安全的地方逃跑