代码之家  ›  专栏  ›  技术社区  ›  M4N

如何仅从批处理文件中删除空目录[已关闭]

  •  4
  • M4N  · 技术社区  · 14 年前

    是否可以从批处理文件中删除给定目录下的所有空子目录?

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

    5 回复  |  直到 11 年前
        1
  •  5
  •   Alex K.    14 年前

    若要复制忽略空目录,可以使用以下选项之一:

    robocopy c:\source\ c:\dest\ * /s
    xcopy c:\source c:\dest\*.* /s
    
        2
  •  13
  •   Adisak    12 年前

    你真的有两个问题:

    1。是否可以从批处理文件中删除给定目录下的所有空子目录?

    对。这一行DOS批处理文件对我有效。您可以传入模式/根的参数,否则它将使用当前目录。

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

    我使用'dir sort'的原因是为了提高性能('dir'和'sort'都相当快)。它避免了其他答案中使用的递归批处理函数解决方案,该解决方案完全有效,但速度慢得令人恼火:-(

    2。或者可以递归地复制目录,但不包括任何空目录?

    有很多方法可以做到这一点在其他答案中列出。

        3
  •  3
  •   Anders    14 年前
    @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
  •  3
  •   YOU    14 年前

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

    xcopy * path\to\newfolder /s /q
    
        5
  •  -1
  •   Matthieu    11 年前

    这个批处理文件在任何路径上都能很好地完成任务,在我的例子中,我使用windows环境变量 iWAI61 :

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