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

Batch file 按名称查找/删除特定文件夹-批次代码,batch-file,cmd,directory,locate,Batch File,Cmd,Directory,Locate,亲爱的社区: 您能为我提供以下场景的批处理代码吗: 查找名为Autoname的文件夹(如果存在)并删除其 主机文件夹X、文件夹本身自动命名以及其中的所有文件 X文件夹可以有任何名称 路径为:%userprofile%\AppData\Local \-X-\Autoname\ 文件夹和文件 我找到了,但这不是我需要的 谢谢大家的时间,我特别感谢@Compo的回答,它被认为是最好的 for /f "delims=" %i in ('dir /b /s /ad u:\sourcedir\*') do

亲爱的社区:

您能为我提供以下场景的批处理代码吗:

查找名为Autoname的文件夹(如果存在)并删除其 主机文件夹X、文件夹本身自动命名以及其中的所有文件

X文件夹可以有任何名称

路径为:%userprofile%\AppData\Local \-X-\Autoname\ 文件夹和文件

我找到了,但这不是我需要的

谢谢大家的时间,我特别感谢@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将禁止报告此类错误。

您现在的问题表明,自动命名目录存在于临时目录中的任何级别

以下示例应是所需的全部内容:

从批处理文件:

@回音 对于/F Delims=%%A在'Dir/B/S/AD-L%Temp%| FindStr/IEC:\\AutoName' 是否存在%%~dpA RD/S/Q%%~dpA 在命令提示下:

@对于'Dir/B/S/AD-L%Temp%|FindStr/IEC:\\AutoName'Do@If Exist%%dpA RD/S/Q%%dpA中的/F Delims=%A
如果您想进入PowerShell,以下操作可能会起作用。如果确信将删除正确的目录,请从remove-Item cmdlet中删除-WhatIf


谢谢你的回复。我交换了一个到目录和子目录的实际路径,它不起作用。您可以在'dir/b/s/ad%userprofile%\AppData\Local\Temp*'do@if/i%~nxi==Autoname ECHO rd/s/q%~dpi'中查看/f delims=%i。遗憾的是,它没有工作,没有提供太多信息。我不知道你的文件结构是什么,也不知道你在想什么。您是直接从提示符处运行它,还是作为批处理文件运行,还是试图以某种方式单击它?dir-sub命令单独显示了什么?Magoo,请查看我的评论和问题中的屏幕截图。谢谢。请使用编辑面板中的工具添加您的屏幕截图,以便其他人将来可以看到。相对于屏幕截图,在Win10上从显示中剪切并粘贴,右键单击cmd窗口,突出显示并输入以粘贴到剪贴板找不到使用屏幕截图进行评论的方法,因此“添加另一个答案”@请看。谢谢如果你有时间的话,我想知道它在什么方面不起作用。有错误消息吗?此外,屏幕截图可以在不参考其他网站的情况下被提问。在许多公司网络上,这样的网站可能会被屏蔽。Lit,谢谢你的建议-问题中添加的评论。我对PowerShell了解不多,所以只需复制您的代码并粘贴到PowerShell中即可。没有错误。我所说的“不工作”是指目录中的“Autoname”文件夹没有被删除,就像运行代码后应该的那样。请查看屏幕截图。它似乎没有找到任何“Autoname”目录。Get ChildItem-Recurse-Directory-Filter'*Autoname*'的输出是什么?我怎么知道?Compo,请查看我的评论和问题中的屏幕截图。谢谢你,康波,它现在很好用!非常感谢。如何将其调整为删除“Autoname”的父文件夹?您可以将%%A、%A、%%A\或%A\更改为%%dpA、%%dpA、%%dpA或%%dpA,但在这种情况下,我不建议这样做。%TEMP%目录存在是有原因的,并且经常被正在运行的进程使用;不应删除它。您可以使用一个条件来执行此操作,如果存在,请执行%%a\If/I not%%~dpA==%Temp%\RD/S/Q%%~dpA。谢谢您的关注,但%Temp%目录不是目标,我只是将其用于代码验证,因为它是相对安全的。问题中列出了实际路径
Get-ChildItem -Recurse -Directory -Filter 'Autoname' |
    ForEach-Object { Remove-Item -Path $_.PSParentPath -Recurse -WhatIf }