有没有办法从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"