我有一些文件和目录,(所有目录都包含文件):
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
中的文件,(我想避免这种情况)。
谢谢
答案 0 :(得分:2)
我建议将其作为使用FOR
循环和/或DEL
和RD
的混合使用的可能替代方法:
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
)