如何使用Windows命令提示符删除空文件夹?

DEV*_*OPS 69 windows directory command-line command

我需要使用Windows命令提示符从我的应用程序文件夹中删除所有空文件夹?

我该如何创建这样的bat文件?

请帮我.

Var*_*rma 117

你可以使用ROBOCOPY.它非常简单,也可用于删除大型层次结构中的空文件夹.

ROBOCOPY folder1 folder1 /S /MOVE
Run Code Online (Sandbox Code Playgroud)

这里的源和目标都是folder1,因为您只需删除空文件夹,而不是将其他(必需)文件移动到不同的文件夹./S选项是跳过复制(移动 - 在上面的情况下)空文件夹.当文件在同一个驱动器中移动时,它也会更快.

  • 好的,这看起来很棒并且有效!我只是不明白为什么,如果从项目文件夹中运行 cmd,它会给我“错误 32 (0x00000020) 删除源目录”——这意味着它无法删除主目录!感谢上帝它不能删除它,因为不应该 - 它不是空的!(“该进程无法访问该文件,因为它正被另一个进程使用。” - 其中 file 必须是目录)。我在里面运行: robocopy 。. /s /移动。 (2认同)

Din*_*jan 57

一种更简单的方法是使用xcopy来使用/ s开关复制整个目录结构.帮助/ s表示复制目录和子目录,除了空目录.

xcopy dirA dirB /S
Run Code Online (Sandbox Code Playgroud)

其中dirA是源文件夹.DirB将是没有空文件夹的副本

  • 我同意这很简单,但我有一个超过1TB数据的目录结构.我不想复制那个! (28认同)
  • 添加/ I开关,例如`xcopy dirA dirB/SI`将跳过显示"dirB是否在目标上指定文件名或目录名?"的提示. (4认同)
  • 另请注意,这不会复制隐藏文件和系统文件 - 包括/ h标志 (4认同)

cor*_*ded 49

for /f "usebackq" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
Run Code Online (Sandbox Code Playgroud)

来自:http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx

当然,在我执行该命令之前,我首先测试它而不删除.此外,这里是评论的修改版本,包括带空格的文件夹:

 for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
Run Code Online (Sandbox Code Playgroud)

PS博客文章中有更多评论可能会帮助你,所以在你尝试之前一定要阅读这些评论

  • 我喜欢这个。这里的链接提到这个更容易(类似于下面的那个):`for /f "tokens=*" %%d in ('dir /ad/b/s ^| sort /R') do rd "% %d"` (2认同)

tom*_*z86 16

你不需要usebackq:

FOR /F delims^= %%A IN ('DIR/AD/B/S^|SORT/R') DO RD "%%A"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢汤姆......你是对的.但是在命令行中,实际上它将使用与批处理文件相反的单个%.用户:请注意,RD不会删除文件,也不会删除包含文件的目录.只是空目录.所以这是完全安全的.FOR/F delims ^ =%A IN('DIR/AD/B/S ^ | SORT/R')DO RD"%A" (4认同)

Boz*_*Joe 8

从相同的引用页面添加腐蚀的答案是PowerShell版本http://blogs.msdn.com/b/oldnewthing/archive/2008/04/17/8399914.aspx#8408736

Get-ChildItem -Recurse . | where { $_.PSISContainer -and @( $_ | Get-ChildItem ).Count -eq 0 } | Remove-Item

或者,更简洁,

gci -R . | where { $_.PSISContainer -and @( $_ | gci ).Count -eq 0 } | ri

信用额去发布作者


小智 5

从命令行: for /R /D %1 in (*) do rd "%1"

在批处理文件中 /R /D %%1 in (*) do rd "%%1"

我不知道它是否有这样的记录,但它适用于 W2K、XP 和 Win 7。我不知道它是否总是有效,但它永远不会意外删除文件。