Windows 从批处理文件的子目录中删除文件夹

Windows 从批处理文件的子目录中删除文件夹,windows,batch-file,cmd,Windows,Batch File,Cmd,如何删除与放置批处理文件的文件夹相关的文件夹列表 我的意思是,脚本应该遍历所有子目录(从当前目录中),并且只从定义的列表中删除文件夹 实际的问题是:定义文件夹列表以便在脚本中编辑列表的最佳方法是什么 示例结构 以下是文件夹的示例结构: d:\root\my.bat d:\root\do_not_remove\ d:\root\delete_this_folder\ d:\root\path\to\folder_to_delete\ d:\root\path\to\another\folder_t

如何删除与放置批处理文件的文件夹相关的文件夹列表

我的意思是,脚本应该遍历所有子目录(从当前目录中),并且只从定义的列表中删除文件夹

实际的问题是:定义文件夹列表以便在脚本中编辑列表的最佳方法是什么

示例结构 以下是文件夹的示例结构:

d:\root\my.bat
d:\root\do_not_remove\
d:\root\delete_this_folder\
d:\root\path\to\folder_to_delete\
d:\root\path\to\another\folder_to_remove\
my.bat
应仅从子目录中删除文件夹。因此,在本例中,只有
d:\root\
中的文件夹

在本例中,需要删除以下文件夹(当然还有其中的所有文件):

delete_this_folder\
path\to\folder_to_delete\
path\to\another\folder_to_remove\
文件夹列表 我需要创建一个易于编辑的脚本,因为文件夹列表可能很长,并且可能会经常更改。是否可以在脚本开头定义文件夹列表

因此,脚本将在循环中删除文件夹

此外,列表中的某些文件夹可能不存在-因此这不会破坏脚本。脚本应该删除所有存在的文件夹

关闭控制台
另外,脚本完成工作后是否可以关闭控制台窗口?

我们假设您的list.txt只包含要删除的文件夹路径

您可以这样做:

@echo off
FOR /f "delims=" %%A IN ('Type list.txt') Do Echo RMDIR /S /Q "%%A"
pause

因此,请在之前用回声检查它,如果你发现它起了作用;你应该压制它

以下命令将生成仅包含文件夹名称的纯文本文件(更改C:\以适合您的路径)

目录C:\/A:D/b>folders.txt

folders.txt文件将位于您当前的文件夹中,可以轻松编辑。/b开关告诉DIR仅包括裸信息


DELTREE在Windows 7中无效,我不确定它是何时被删除的。

我实际上也有同样的需要,但我通过创建一个专用的可执行文件来解决它,该文件/文件夹路径列表将其删除

刚刚将我的小工具添加到GitHub:


dir
列出要删除的文件/文件夹,并在该文件上调用我的程序。

这不是问题,而是“编写我的代码”请求。是的,所描述的一切都是可能的。给您一些提示:
deltree
删除非空目录,
%~dp0
提供包含调用bat文件的文件夹的路径,
FOR/F
逐行读取文本文件(排除的文件夹列表),如果%string1%==%string2%与字符串进行比较,如果字符串相等,则执行代码。这就是你所需要的。现在,如果你有具体的问题或问题,请展示一些努力,然后回来。@MichaelS我真正的问题是如何定义文件夹列表,以便轻松编辑列表。剩下的只是对整个问题的描述,这样想帮助的人就可以很容易地理解它的用途。在这种情况下:创建一个文本文件,将不应该删除的每个文件夹放在单独的一行中。然后(在遍历文件夹时)使用
findstr
检查每个文件夹名称是否在排除列表中。假设您要删除一个文件夹。它的名称在
%%F
中。使用
findstr%%F excludelist.txt
。如果%errorlevel%为0,则您知道不应删除该文件夹。否则,请将其移除。顺便说一句,
对于(.)DO(…)中的/R“C:\SomeFolder”%%F
将遍历所有子文件夹。