如何从batch file中只删除空目录

有没有办法从batch file中删除给定目录下的所有空子目录?

或者有可能recursion复制一个目录,但不包括任何空目录?

要复制忽略空dirs,您可以使用以下之一:

robocopy c:\source\ c:\dest\ * /s xcopy c:\source c:\dest\*.* /s 

你真的有两个问题:

1.是否有办法从批处理文件中删除给定目录下的所有空白子目录?

是。 这个单行的DOS批处理文件适用于我。 你可以传入一个模式/根的参数,或者它将使用当前目录。

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

我用'dir | sort'是为了表演('dir'和'sort'都相当快)。 它避免了在其他答案中使用的递归批处理函数解决方案,这是完全有效的,但可能非常慢:-(

2.还是有可能递归复制一个目录,但不包括任何空目录?

其他答案中列出了很多方法。

xcopy的/ s复制时将忽略空白文件夹

 xcopy * path\to\newfolder /s /q 
 @echo off setlocal ENABLEEXTENSIONS call :rmemptydirs "%~1" goto:EOF :rmemptydirs FOR /D %%A IN ("%~1\*") DO ( REM recurse into subfolders first... call :rmemptydirs "%%~fA" ) RD "%~f1" >nul 2>&1 goto:EOF 

调用: rmemptydirs.cmd "c:\root dir to delete empty folders in"

这个批处理文件从任何路径都可以窍门,在我的情况下,我使用Windows环境变量IWAY61

 @echo off cd %IWAY61% for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"