Batch file 运行批处理命令删除空文件夹和子文件夹时出现“找不到文件”错误

Batch file 运行批处理命令删除空文件夹和子文件夹时出现“找不到文件”错误,batch-file,batch-processing,Batch File,Batch Processing,由于某些原因,当我运行此DOS命令删除空文件夹和子文件夹时,会出现“未找到文件”错误。据我所知,它看起来是正确的。有人有什么建议吗 for /f "delims=" %%x in (dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL 你在dir前面漏了一个勾号。试试这个: for /f "delims=" %%x in ('dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL 这更干净 for /f "de

由于某些原因,当我运行此DOS命令删除空文件夹和子文件夹时,会出现“未找到文件”错误。据我所知,它看起来是正确的。有人有什么建议吗

for /f "delims=" %%x in (dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL

你在dir前面漏了一个勾号。试试这个:

for /f "delims=" %%x in ('dir /s /b /ad ^| sort /r') do rd "%%x" 2>NUL
这更干净

for /f "delims=" %%x in ('dir /b /ad') do echo.rd /s /q "%%x"

去除回声。只有结果正确时才可使用。

谢谢!感谢您消除了我的错误,但它不会删除空文件夹。有什么想法吗?我认为你不需要那种,不要紧。另外,我会将/S放在RD上,而不是dir上,可能会更快。请参阅RD/?。请参阅我的最新答案。我遗漏了2>NUL,所以您可以看到任何错误。这是一个非常非常糟糕的主意。rd/s/q设计用于删除整个目录子树,而不管它是否为空。@Magoo。。。你说得对!我认为这就是op想要的,他只是在处理空文件夹时遇到了麻烦。当我再次阅读时,我想也许你是对的,op只是试图删除那些空的。。。虽然原始代码也没有为空文件夹做任何规定。抱歉:sort/r的目的是提供按逆字母顺序排列的目录名,因此最长的名称出现在列表的第一位。因此,首先会遇到任何子目录中最深的子目录。`RD~尝试删除该目录,并且仅当目标目录为空时才会成功,因此,如果您的子目录包含三个空子目录,然后这三个都将被删除,只有到那时,父项才会被处理并删除(如果现在为空)。在dir之前添加开头引号应该可以解决问题,但事实并非如此,您需要进一步查看。目录可能被视为不可删除的两个原因是,它实际上包含不可见的文件,通常是thumbs.db,您可以使用attrib*在相应的子目录中找到它,并且存在权限问题,您无权删除该目录。使用dir/q查看权限。