有没有办法从批处理文件中删除给定目录下的所有空子目录?
或者是否可以递归复制目录,但排除任何空目录?
您确实有两个问题:
1。有没有办法从批处理文件中删除给定目录下的所有空子目录?
是的。这个一行 DOS 批处理文件对我有用。您可以传入模式/根的参数,否则它将使用当前目录。
for /f "delims=" %%d in ('dir /s /b /ad %1 ^| sort /r') do rd "%%d" 2>nul
我使用“dir|sort”的原因是为了性能(“dir”和“sort”都相当快)。它避免了其他答案之一中使用的递归批处理函数解决方案,该解决方案完全有效,但速度可能慢得令人恼火:-(
2。或者是否可以递归复制目录,但排除任何空目录?
其他答案中列出了多种方法来执行此操作。
要复制忽略空目录,您可以使用以下之一:
robocopy c:\source\ c:\dest\ * /s
xcopy c:\source c:\dest\*.* /s
@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"
xcopy 的 /s 复制时会忽略空白文件夹
xcopy * path\to\newfolder /s /q
这个批处理文件在任何路径上都能很好地发挥作用,在我的例子中,我使用 Windows 环境变量 IWAY61 :
@echo off
cd %IWAY61%
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"