如何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
)
我有一个“清理”批处理程序,它位于父目录中并删除目录“树”中的某些无关文件。 一项功能是删除额外的“.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
)