Дано: файлообменник на винде. Куча файлов везде и во всех папках, есть подпапки 2-3 и т.д уровней.
Задача: Удалить все файлы и папки, исключения: 1) Папки первого уровня удалять не нужно 2) Есть две папки "First" и "Second" в каталоге 1ого уровня - Эти папки не трогаем 3) Папки второго уровня с названием "Scan" не удаляем, но очищаем содержимое
Ковырять безопасность не хочу. В идеале исключения задаются в стороннем .txt файле
@echo off
REM Скрипт очистки каталогов
REM Установим параметры запуска
SET PathToDel=E:\tmp\12\1
SET Protocol=E:\tmp\12\12.log
echo =========================================================================================== >> %Protocol%
echo %Date% %Time% Удаление файлов и папок из каталога %PathToDel% >> %Protocol%
forfiles /p %PathToDel% /m * /c "cmd /c E:\tmp\12\d1.cmd @file @isdir @ext @relpath %PathToDel% @path"
echo %Date% %Time% конец обработки >> %Protocol%
echo =========================================================================================== >> %Protocol%
@echo off
if Z%2Z==ZTRUEZ goto DelDir1
if Z%2Z==ZFALSEZ goto DelFile1
echo неправильный параметр №2, выход.
goto ex15
:DelDir1
REM Удаление каталогов. Определённые каталоги оставим
if Z%1Z==Z"First"Z goto ex16
if Z%1Z==Z"Second"Z goto ex17
:: очистить папку
echo Очистка папки %6 >> %Protocol%
forfiles /p %6 /m * /c "cmd /c E:\tmp\12\d2.cmd @file @isdir @ext @relpath @path"
goto ex15
:DelFile1
REM Удаление файлов.
echo del /Q %6 >> %Protocol%
del /Q %6
goto ex15
:ex16
REM Очистка спец. каталогов
echo Каталог %1\First оставим >> %Protocol%
goto ex15
:ex17
echo Каталог %1\Second оставим >> %Protocol%
:: Выход
:ex15
@echo off
if Z%2Z==ZTRUEZ goto DelDir2
if Z%2Z==ZFALSEZ goto DelFile2
echo неправильный параметр №2, выход.
goto ex25
:DelDir2
REM Удаление каталогов
if NOT Z%1Z==Z"Scan"Z goto sk2
:: очистить папку Scan
echo Очистка папки Scan (%5\Scan) >> %Protocol%
forfiles /p %5%\Scan /m * /s /c "del /F /Q @path"
goto ex25
:sk2
echo RD /S /Q \%5 >> %Protocol%
RD /S /Q %5
goto ex25
:DelFile2
REM Удаление файлов.
echo del /Q %5 >> %Protocol%
del /Q %5
:ex25
d1.cmd
d1.cmd
d2.cmd
тут с кодами на форуме хрень какая-то творится. всего три файла: c1.cmd d1.cmd d2.cmd текст их выше по порядку.
Ещё: это я по-быстрому накидал из моего скрипта более сложного. "E:\tmp\12" - это путь, где я эксперименты проводил - в тексте он встречается, надо заменить на ваш.
@echo off
if Z%2Z==ZTRUEZ goto DelDir2
if Z%2Z==ZFALSEZ goto DelFile2
echo неправильный параметр №2, выход.
goto ex25
:DelDir2
REM Удаление каталогов
if NOT Z%1Z==Z"Scan"Z goto sk2
:: очистить папку Scan
echo Очистка папки Scan (%5\Scan) >> %Protocol%
forfiles /p %5\Scan /m * /s /c "cmd /c E:\tmp\12\d2.cmd @file @isdir @ext @relpath @path"
goto ex25
:sk2
echo RD /S /Q \%5 >> %Protocol%
RD /S /Q %5
goto ex25
:DelFile2
REM Удаление файлов.
echo del /Q %5 >> %Protocol%
del /Q %5
:ex25
Slayer пишет:
Спасибо, завтра попробую
Сначала доработайте скрипты под свои каталоги и потренируйтесь на ненужных файлах и каталогах. А то вылезти могут всякие косяки. Я тестировал на Windows 7.