如何删除所有文件和目录(例外)

时间:2019-06-11 09:37:45

标签: windows batch-file

我有一些文件和目录,(所有目录都包含文件)

C:\ABC
│   file1.txt
│
├───folder1
│       oneormorefiles.ext
│
├───folder2
│       somemorefiles.ext
│
└───logs
        aaa-test-01.log
        b-test-a-02.log
        cc-test-03.log

我想删除所有目录及其包含的文件,但希望保留C:\abc\logs及其所有文件。

我尝试过:

PUSHD "c:\logs" && rd /s/q "c:\abc" 2>nul

但这也是C:\abc\logs中的文件,(我想避免这种情况)

谢谢

2 个答案:

答案 0 :(得分:2)

我建议将其作为使用FOR循环和/或DELRD的混合使用的可能替代方法:

MD "%TEMP%\$_.dummy"&&ROBOCOPY "%TEMP%\$_.dummy" "C:\abc" /E /XD logs /PURGE>NUL 2>&1&RD "%TEMP%\$_.dummy"

答案 1 :(得分:1)

我将通过以下方式进行操作:

rem // Change to the target root directory:
pushd "C:\ABC" && (
    rem // Loop over all immediate sub-directories:
    for /F "delims= eol=|" %%F in ('dir /B /A:D "*"') do (
        rem // Remove sub-directory tree unless name is `log`:
        if /I not "%%F" == "logs" rd /S /Q "%%F"
    )
    rem // Delete files located in the root directory:
    del /A /F /Q "*.*"
    rem // return to the original directory:
    popd
)