如何使用 Windows 命令递归删除匹配的目录?

如何使用 Windows 命令递归删除匹配的目录?

我有一个文件夹C:\Users\user\Desktop\htmlreports\,里面有不同的文件夹,但我只想删除192名称中包含文本的文件夹,例如

abc192     
xyz192     
pqr192xyz  

除此之外,还有其他文件夹。

为了仅删除带有文本的匹配文件夹192,我尝试了以下操作 -

rd /s /q C:\Users\user\Desktop\htmlreports\*192*

但它的结果是The filename, directory name, or volume label syntax is incorrect.

请建议什么是正确的正则表达式来帮助实现这一点。

笔记这是针对 Windows 环境的

答案1

一行使用cd /D folder && for /Directory /Recursive

cd/d "%userprofile%\Desktop\htmlreports" && for /D /R  %i in (*192*)do rmdir /s /q "%~i"

在此处输入图片描述For /D /R来源


1.转到您的文件夹:

cd /D "C:\Users\user\Desktop\htmlreports"
  • 或者,使用一个系统变量:
cd /d "%userprofile%\Desktop\htmlreports"

2.使用&&操作员

cd /D ... && for /D /R... do ...

观察:1 除非cd /D return 0,接下来for /D /R将执行的命令是……

观察:2你可以加echo\在删除任何文件/文件夹之前测试并检查输出:

cd/d "%userprofile%\Desktop\htmlreports" && for /D /R  %i in (*192*)do echo\rmdir /s /q "%~i"

答案2

尝试使用 cmd(rd不起作用,因为它只能删除目录,使用方法del如下):

del /s /q "C:\Users\user\Desktop\htmlreports\*192*"

尝试使用 powershell:

dir "C:\Users\user\Desktop\htmlreports" -filter *192* | rm

答案3

电源外壳选项:

$Source = 'C:\Users\user\Desktop\htmlreports'

Get-ChildItem $Source -Directory -Recurse | Where Name -match '192' | Remove-Item -Recurse

使用别名,我们可以将其缩短为:

gci 'C:\Users\user\Desktop\htmlreports' -ad -r | ? Name -match '192' | ri -r

相关内容