Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление каталогов и файлов в папке, плюс исключения

Ответить
Настройки темы
CMD/BAT - Удаление каталогов и файлов в папке, плюс исключения

Новый участник


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

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


Добрый вечер. Есть такая задача.
нужно чистить каталог TEMP удалять оттуда все старше например 3 дней. Но за исключением папки Егаис в ней нельзя никогда удалять файл curl.exe Все остальное что старше 3 дней также можно удалить.
пробовал делать через forfiles
forfiles /p "%LocalAppdata%\Temp" /s /d -3 /c "cmd /c rd /s /q @file"
forfiles /p "%LocalAppdata%\Temp" /s /d -3 /c "cmd /c del /q /f @file"
тоесть сначала удаляю папки потом пробегаю оставшиеся файлы. первый раз если темп большой то делается довольно долго все, но потом норм в принципе. Но вот как сделать в данной конструкции еще исключения, не очень понимаю. поидее надо наверное if туда засунуть, но както громоздко получается и не уверен что все будет работать.

Отправлено: 22:01, 24-11-2020

 

Ветеран


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

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


shaman-lip, ответьте себе на вопросы:
  • что делает каталог ЕГАИС в каталоге временных файлов?
  • что делает в нём файл curl.exe?!
Вы не с того бока зашли.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:20, 24-11-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


лежат они там. Почему - без понятия, но вот так вот у нас есть. Менять это нет возможности, этим другая служба занимается. В принципе как вариант можно наверное и совсем не трогать данный каталог, чтобы не заморачиваться сильно.

Отправлено: 07:24, 25-11-2020 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Iska, а у нас народ любит такие вещи. Я тут тоже в конторе почистил темпы, оказалось, что 1С хранит там какие-то неимоверно важные файлы (на постоянной основе!). А всё потому, что одинэсники безграмотные.

shaman-lip, вот вы описали задачу, я, например, не понимаю, что нужно.
Цитата shaman-lip:
за исключением папки Егаис в ней нельзя никогда удалять файл curl.exe Все остальное что старше 3 дней также можно удалить »
Как это понимать? Поставьте задачу чётко и ясно.
Например: в папке C:/TEMP удалить все файлы и папки старше трёх дней за исключением папки "егаис" и файла curl.exe.
Я верно предположил?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

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

Отправлено: 09:29, 25-11-2020 | #4


Ветеран


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

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


исключения можно делать подобным образом:
Код: Выделить весь код
.../c "cmd /c echo @path"|find /i /v "Егаис"
.../c "cmd /c echo @file"|find /i /v "curl.exe"
и это надо оборачивать в for /f, например:
Код: Выделить весь код
@echo off
set "d=%LocalAppdata%\Temp"
set "d1=A"
set "d2=Егаис"
set "f1=aaa.txt"
set "f2=curl.exe"
set dt=3

:: Файлы
for /f "delims=" %%a in ('forfiles /p "%d%" /s /d -%dt% /c "cmd /c if @isdir==FALSE echo @path"^|findstr /v /c:"%f1%" /c:"%f2%"') do >nul 2>&1 del /q "%%~a"
:: Папки
for /f "delims=" %%a in ('forfiles /p "%d%" /s /d -%dt% /c "cmd /c if @isdir==TRUE echo @path"^|findstr /v /c:"%d1%" /c:"%d2%"') do >nul 2>&1 rd /s /q "%%a"
pause& exit

Последний раз редактировалось alpap, 25-11-2020 в 15:33.

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

Отправлено: 15:28, 25-11-2020 | #5


Аватара для YuS_2

Crazy


Contributor


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

Профиль | Отправить 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


Новый участник


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

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


"Как это понимать? Поставьте задачу чётко и ясно.
Например: в папке C:/TEMP удалить все файлы и папки старше трёх дней за исключением папки "егаис" и файла curl.exe.
Я верно предположил?"
Да поняли совершенно верно )
спасибо за ответы, буду пробовать.

Отправлено: 18:28, 25-11-2020 | #7


Ветеран


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

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


Цитата DJ Mogarych:
…оказалось, что 1С хранит там какие-то неимоверно важные файлы (на постоянной основе!). »
Мне такового не попадалось.

Отправлено: 19:18, 25-11-2020 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


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

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


Iska, это местные реалии. То ли внедренцы какие так написали, то ли здешние программисты.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:09, 26-11-2020 | #9


Ветеран


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

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


DJ Mogarych, а… Ну, да, такое бывает.

Отправлено: 14:43, 26-11-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление каталогов и файлов в папке, плюс исключения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление указанных файлов в заданной папке Devddd Скриптовые языки администрирования Windows 14 08-04-2020 22:08
CMD/BAT - [решено] Удаление файлов по списку и исключения через параметр attrib Stalker_AleX333 Скриптовые языки администрирования Windows 3 27-06-2019 22:08
CMD/BAT - Удаление файлов старше N дней в подпаках, кроме файлов в самой папке Negtm Скриптовые языки администрирования Windows 4 03-02-2017 15:30
CMD/BAT - [решено] Удаление файлов нулевого размера, а затем удаление пустых каталогов ilyadud Скриптовые языки администрирования Windows 5 25-08-2012 10:57
Удаление неудаляемых файлов и каталогов Kasper Хочу все знать 52 14-05-2004 00:29




 
Переход