连续搜索和删除特定搜索词文件夹

时间:2014-07-20 18:59:00

标签: file batch-file

需要帮助才能编写批处理文件来搜索c驱动器,并删除文件夹名称中任何位置有“text”字样的所有文件夹和子目录,只要找到包含该字词的文件夹,该文件夹就会连续运行。 例如,如果C:中任何地方的文件夹被称为“文本”或另一个名为“1text2”或“九十文本文档”的文件夹,它将删除所有3个文件夹,因为它们包含单词“text”

我有以下内容,但它只删除了1个文件夹,并且没有检测到文件夹名称中任何位置带有“text”字样的文件夹:

@echo off
for /d /r "c:\" %%a in (*) do if /i "%%~nxa"=="text" set "folderpath=%%a"
rmdir /s /q "%folderpath%"

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

for /r "c:\" /d %%a in (*text*) do echo rd /s /q "%%a"

对包含/r的{​​{1}}下的每个文件夹(/d)递归(c:\),递归删除该文件夹。

text命令回显到控制台。如果输出正确,请删除rd以执行删除。

答案 1 :(得分:0)

@echo off
for /d /r "c:\" %%a in (*) do if /i "%%~nxa"=="text" set "folderpath=%%a"
rmdir /s /q "%folderpath%"

三个问题:

  1. 您的for搜索每个"文字"并且每次都会覆盖%folderpath%,从而将其设置为最后一次创建。

  2. 您正在寻找"%%~nxa"=="text",但这不会测试" text" 包含

  3. 您在块内使用变量,需要延迟扩展。

  4. 试试这个(未经测试):

    @echo off
    for /d /r "c:\" %%a in (*) do ( 
      echo %%~nxa |find /i "text">nul && echo rmdir /s /q "%%a"
    )
    

    如果您对输出感到满意,请删除echo

    注意,这可能会导致不必要的删除(例如"纹理"确实包含" Text")