【问题标题】:Batch file to delete all folders in a directory except a specified list用于删除目录中除指定列表之外的所有文件夹的批处理文件
【发布时间】:2011-11-22 02:58:17
【问题描述】:

我正在寻找一个批处理文件,该文件将进入 C:\Documents and Settings\ 并删除除我想保留的几个文件夹之外的所有文件夹。

【问题讨论】:

    标签: batch-file windows-xp cmd


    【解决方案1】:

    这是一个 hack-around =D

    如果您在说 folder.txt 中有一个文件夹路径列表,如下所示:

    • C:\Documents and Settings\Mechaflash
    • C:\Documents and Settings\Mom
    • C:\Documents and Settings\Dad

    等等。您可以做的是暂时将它们更改为隐藏文件夹,然后对所有非隐藏文件夹进行 RMDIR。

    CD "C:\Documents and Settings\"
    FOR /F "tokens=*" %%A IN (folders.txt) DO (
     ATTRIB +H "%%A" /S /D
    )
    FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /B /A:-HD "C:\Documents and Settings\"`) DO (
     RMDIR /S /Q %%A
    )
    FOR /F "tokens=*" %%A IN (folders.txt) DO (
     ATTRIB -H "%%A" /S /D
    )
    

    【讨论】:

      【解决方案2】:

      使用 robocopy 的解决方案:

      cd /d "C:\Documents and Settings"
      md tmp
      robocopy . tmp /E /MOVE /XD folderToKeep1 folderToKeep2 ...
      rd /s /q tmp
      

      【讨论】:

        【解决方案3】:
        rem the last space character is deliberate
        set yourKeepList="abc def "
        for /f %%f in ('dir /b/ad "C:\Documents and Settings"') do (
            (echo %yourKeepList% | findstr /v /i "%%f " 1>nul) && rd /q/s %%f
        )
        

        【讨论】:

        • 我无法让这个正常工作;我确实包括了空间。
        • 您是否遇到任何错误?还是这没有删除您预期的目录?
        • C:\Documents and Settings>((echo "keepList.txt " | findstr /v /i "test" 1>nul ) && rd /q/sf ) 系统找不到指定的文件.
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 1970-01-01
        • 2019-07-16
        • 2019-07-11
        • 2023-03-07
        • 2011-10-08
        相关资源
        最近更新 更多