需要帮助才能编写批处理文件来搜索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%"
非常感谢任何帮助
答案 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%"
三个问题:
您的for
搜索每个"文字"并且每次都会覆盖%folderpath%,从而将其设置为最后一次创建。
您正在寻找"%%~nxa"=="text"
,但这不会测试" text" 包含。
您在块内使用变量,需要延迟扩展。
试试这个(未经测试):
@echo off
for /d /r "c:\" %%a in (*) do (
echo %%~nxa |find /i "text">nul && echo rmdir /s /q "%%a"
)
如果您对输出感到满意,请删除echo
。
注意,这可能会导致不必要的删除(例如"纹理"确实包含" Text")