Как удалить все файлы и каталоги с исключением - PullRequest
0 голосов
/ 11 июня 2019

У меня есть несколько файлов и каталогов, (все каталоги содержат файлы) :

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 ]

2 голосов
/ 11 июня 2019

Я бы предложил это в качестве альтернативы использованию петли FOR и / или смеси DEL и RD:

MD "%TEMP%\$_.dummy"&&ROBOCOPY "%TEMP%\$_.dummy" "C:\abc" /E /XD logs /PURGE>NUL 2>&1&RD "%TEMP%\$_.dummy"
1 голос
/ 11 июня 2019

Я бы сделал это следующим образом:

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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...