按名称查找/删除特定文件夹 - 批号

Locate / Delete specific folder by name - Batch code

亲爱的 Whosebug 社区,

能否请您提供以下情况的批号:

To find the folders named "Autoname" if they exist, and delete their host folders (X), folder itself (Autoname) and all the files inside.

(X ) folders may have any names

The path is: %userprofile%\AppData\Local\ -X- \ "Autoname" \ folders & files.

我找到了similar post and similar post,但这不是我需要的。


谢谢大家的宝贵时间,特别感谢@Compo的回答,被认为是最好的!

for /f "delims=" %i in ('dir /b /s /ad u:\sourcedir\*') do @if /i "%~nxi"=="e9" ECHO rd /s/q "%~dpi."

这应该删除 u:\sourcedir 目录的任何子目录的父目录,该目录本身包含一个子目录 e9。目录名称并不神奇 - 正是我用于测试的名称。

删除父目录将删除删除目录下的所有文件和目录。

这段代码将简单地报告它打算做什么。 验证 后,您需要删除 echo 关键字才能执行删除。请注意,如果此脚本行(旨在直接从提示中调用)可能会生成错误消息,如果它尝试删除存在于已删除目录下的 e9 目录。将 2>nul 附加到该行(包括前导 space)应禁止报告此类错误。

你的问题现在表明 Autoname 目录存在于你的临时目录中的任何级别。

下面的例子应该是所需要的:

来自批处理文件:

@Echo Off
For /F "Delims=" %%A In ('"Dir/B/S/AD-L "%Temp%"|FindStr/IEC:"\AutoName""'
) Do If Exist "%%~dpA" RD/S/Q "%%~dpA"

从命令提示符:

@For /F "Delims=" %A In ('"Dir/B/S/AD-L "%Temp%"|FindStr/IEC:"\AutoName""') Do @If Exist "%~dpA" RD/S/Q "%~dpA"

如果您想继续使用 PowerShell,以下方法可能会奏效。当您确信将删除正确的目录时,请从 Remove-Item cmdlet 中删除 -WhatIf

Get-ChildItem -Recurse -Directory -Filter 'Autoname' |
    ForEach-Object { Remove-Item -Path $_.PSParentPath -Recurse -WhatIf }