有没有办法从批处理文件中删除给定目录下的所有空子目录?
或者是否可以递归复制目录,但不包括任何空目录?
答案 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"