Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1235
Благодарности: 518

Профиль | Отправить PM | Цитировать


Цитата 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

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:02, 25-11-2020 | #6