Цитата DJ Mogarych:
а у нас народ любит такие вещи. Я тут тоже в конторе почистил темпы, оказалось, что 1С хранит там какие-то неимоверно важные файлы »
|
Действительно, ситуация нередкая...
У меня тоже когда-то была такая задача...
Вот, из архивов, батник исключающий подкаталоги (не файлы):
Очистка временных каталогов с исключениями
Код:

@echo off
rem Вариант очистки временных папок с выводом удаляемых, очищаемых и исключённых каталогов (но не файлов)
echo Процесс очистки временных каталогов...
echo Старт: %time%
echo.
rem Перечень каталогов для очистки (задаются папки с абсолютными путями):
set "d1=%temp%"
set "d2=%windir%\temp"
set "d3="
rem количество очищаемых каталогов:
set n=2
rem Перечень подкаталогов исключаемых из удаления в одном корневом каталоге
rem (задаются только имена папок, без путей и слешей и корневой каталог с абсолютным путем):
rem корневой каталог
set "root=%temp%"
rem подкаталоги
set "e1=temp"
set "e2=123"
set "e3=Maxthon5Cache"
set "e4="
rem количество исключаемых подкаталогов:
set k=3
setlocal enabledelayedexpansion
rem Составляем массивы обрабатываемых каталогов в строки:
for %%t in (d e) do (
set x=%%t
if "!x!"=="d" (set /a z=n) else (set /a z=k)
for /l %%g in (1,1,!z!) do (
if defined %%t%%g (set var=%%g&call :per)
)
)
rem Массивы каталогов для обработки (для вывода раскомментировать):
::echo очищаются - %arr_d%
::echo исключения - %arr_e%
rem Предохранитель для проверки:
::pause&exit
rem Цикл удаления файлов и подкаталогов:
for %%v in (%arr_d%) do (
pushd "%%~v"
for /f "delims=" %%i in ('dir /b/ad') do set "fd=%%~dpnxi"&call :rem
echo Удаляем только файлы, в каталоге: "%%~v"
>nul 2>&1 del /f/q/a "%%~v"
popd
)
echo.
echo Стоп: %time%
pause&exit /b
:per
set "var=!%x%%var%!"
set "ext=!arr_%x%!"
if "%x%"=="d" if not exist "!var!\" exit /b
set "arr_%x%=%ext% "%var%""
exit /b
:rem
rem Проверка списка исключений:
for %%m in (%arr_e%) do (
if /i "%fd%" equ "%root%\%%~m" echo Исключается каталог: "%fd%"&exit /b
)
echo Удаляем каталог: "%fd%"
>nul 2>&1 rd /s/q "%fd%"
exit /b