如何从批处理文件中仅删除空目录

时间:2010-04-23 10:47:33

标签: windows batch-file

有没有办法从批处理文件中删除给定目录下的所有空子目录?

或者是否可以递归复制目录,但不包括任何空目录?

5 个答案:

答案 0 :(得分:13)

你真的有两个问题:

<强> 1。有没有办法从批处理文件中删除给定目录下的所有空子目录?

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

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

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

<强> 2。或者是否可以递归复制目录,但不包括任何空目录?

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

答案 1 :(得分:5)

要复制忽略空目录,您可以使用以下方法之一:

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

答案 2 :(得分:3)

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

xcopy * path\to\newfolder /s /q

答案 3 :(得分:3)

@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"

答案 4 :(得分:-1)

这个批处理文件从任何路径都可以正常工作,在我的例子中我使用Windows环境变量 IWAY61

@echo off

cd %IWAY61%

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