如何search/delete多个子文件夹?

How to search/delete multiple subfolders?

我有一个“清理”批处理程序,它位于父目录中并删除目录“树”中的某些无关文件。 一项功能是删除额外的“.backup”保存文件夹(只是 .backup,不是主文件夹) 作为参考,文件夹路径如下:

\Parent folder (w/ my .bat)
  \Saves
    \save 1\save files
    \save 1.backup\save files
    \save 2\save files
    \save 2.backup\save files
    (etc)

我可以使用

删除不需要的子文件夹
for /d %%x in (Saves\*.backup) do rd /s /q "%%x"

但是,我想在代码中添加检查以验证文件夹是否确实已被删除,并给出成功、失败、无文件夹等结果的正确消息。

我可以使用 file 删除函数使用 IF EXIST/IF NOT EXIST 参数来做到这一点,但我无法将这些应用于子文件夹删除。

我可以在保存文件夹中查找满足 EXIST/NOT EXIST 参数的文件,但是在子文件夹名称中使用 * 通配符似乎是一个问题,程序无法检测到any folders/files 使用该语句。但是,如果我直接定义一个特定的保存文件夹,子程序将完美运行。

所以:

if not exist "Saves\save 1.backup\*.*" ( goto nofile )
if exist "Saves\save 1.backup\*.*" ( for /d %%x in (Saves\*.backup) do rd /s /q "%%x" )

将删除正确的文件夹(如果没有有效文件夹则给出消息),但是

if not exist "Saves\*.backup\*.*" ( goto nofile )
if exist "Saves\*.backup\*.*" ( for /d %%x in (Saves\*.backup) do rd /s /q "%%x" )
 

不删除任何内容,只是给出我的“nofile”消息。

显然,指定每个可能的保存名称不是一个选项。

有什么解决办法吗?

p.s。避免任何额外的问题:我想 [偶尔] 删除这些备份,因为程序每次保存都会创建一个新备份。

您可以在命令 rd.

后将文件夹检查到 for 循环中
for /d %%x in (Saves\*.backup) do (
  rd /q /s %%x
  if exist %%x (echo Failed) else echo Success
)