如何解决如何搜索/删除多个子文件夹?
我有一个“清理”批处理程序,它位于父目录中并删除目录“树”中的某些无关文件。 一个功能是删除额外的“.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"
但是,我想在代码中添加一个检查以验证文件夹是否确实已被删除并给出成功、失败、没有文件夹等结果的正确消息。
我可以通过使用 IF EXIST/IF NOT EXIST 参数的 file 删除函数来做到这一点,但我无法将这些应用于子文件夹删除。
我可以在保存文件夹中查找文件以满足 EXIST/NOT EXIST 参数,但是在子文件夹名称中使用 * 通配符似乎会给工作带来麻烦,并且程序无法检测到任何文件夹/文件使用该语句。但是,如果我直接定义一个特定的保存文件夹,该子程序将完美运行。
所以:
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”消息。
显然,指定每个可能的保存名称不是一个选项。
有什么解决办法吗?
附言避免任何额外的问题:我想 [偶尔] 删除这些备份,因为程序每次保存时都会创建一个新备份。
解决方法
您可以在命令 rd 后将文件夹检入 for 循环。
for /d %%x in (Saves\*.backup) do (
rd /q /s %%x
if exist %%x (echo Failed) else echo Success
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。