【发布时间】:2015-03-31 02:51:41
【问题描述】:
由于某种原因,当我运行此 DOS 命令删除空文件夹和子文件夹时,出现“找不到文件”错误。据我所知,它看起来是正确的。有人有什么建议吗?
for /f "delims=" %%x in (dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL
【问题讨论】:
-
sort /r的目的是为for提供按字母倒序排列的目录名称,因此最长的名称出现在列表的最前面。因此,首先遇到任何子目录的最深子目录。 `RD~ 尝试删除目录,只有目标目录为空才会成功,因此如果您有一个包含三个空子目录的子目录,那么这三个将被删除,然后才会处理和删除父目录如果现在为空。 -
在
dir之前添加开场引号应该可以解决问题,但由于它没有,您需要进一步研究。目录可能被视为不可删除的两个原因是它实际上包含不可见的文件(通常是thumbs.db),您可以在相应的子目录中使用attrib *找到这些文件,以及您无权删除的权限问题目录。使用dir /q查看权限。
标签: batch-file batch-processing