按名称查找/删除特定文件夹 - 批次代码

时间:2018-03-08 13:32:33

标签: batch-file cmd directory locate

亲爱的StackOverflow社区,

请您使用以下方案的批代码告诉我:

  

查找名为" Autoname"的文件夹如果他们存在,并删除他们的   主机文件夹(X),文件夹本身(自动命名)和内部的所有文件。

     

(X)文件夹可以有任何名称

     

路径为:%userprofile%\ AppData \ Local \ -X- \" Autoname" \   文件夹&文件。

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

谢谢大家的时间,我特别感谢@Compo的答案,它被认为是最好的!

3 个答案:

答案 0 :(得分:0)

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附加到该行(包括前导空格)应禁止报告此类错误。

答案 1 :(得分:0)

现在您的问题表明const T&目录存在于临时目录中的任何级别。

以下示例应该是所有要求的:

从批处理文件:

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"

答案 2 :(得分:0)

如果您想继续使用PowerShell,可能会有以下情况。如果您确信将删除正确的目录,请从-WhatIf cmdlet中删除Remove-Item

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