|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление каталогов и файлов в папке, плюс исключения |
|
CMD/BAT - Удаление каталогов и файлов в папке, плюс исключения
|
Новый участник Сообщения: 3 |
Добрый вечер. Есть такая задача.
нужно чистить каталог 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
|
Профиль | Отправить PM | Цитировать shaman-lip, ответьте себе на вопросы:
|
Отправлено: 23:20, 24-11-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать лежат они там. Почему - без понятия, но вот так вот у нас есть. Менять это нет возможности, этим другая служба занимается. В принципе как вариант можно наверное и совсем не трогать данный каталог, чтобы не заморачиваться сильно.
|
Отправлено: 07:24, 25-11-2020 | #3 |
fascinating rhythm Сообщения: 6648
|
Профиль | Отправить PM | Цитировать Iska, а у нас народ любит такие вещи. Я тут тоже в конторе почистил темпы, оказалось, что 1С хранит там какие-то неимоверно важные файлы (на постоянной основе!). А всё потому, что одинэсники безграмотные.
shaman-lip, вот вы описали задачу, я, например, не понимаю, что нужно. Цитата shaman-lip:
Например: в папке C:/TEMP удалить все файлы и папки старше трёх дней за исключением папки "егаис" и файла curl.exe. Я верно предположил? |
|
------- Отправлено: 09:29, 25-11-2020 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать исключения можно делать подобным образом:
и это надо оборачивать в 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 |
Crazy Сообщения: 1227
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
У меня тоже когда-то была такая задача... Вот, из архивов, батник исключающий подкаталоги (не файлы): Очистка временных каталогов с исключениями
@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 |
|
------- Отправлено: 17:02, 25-11-2020 | #6 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать "Как это понимать? Поставьте задачу чётко и ясно.
Например: в папке C:/TEMP удалить все файлы и папки старше трёх дней за исключением папки "егаис" и файла curl.exe. Я верно предположил?" Да поняли совершенно верно ) спасибо за ответы, буду пробовать. |
Отправлено: 18:28, 25-11-2020 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 19:18, 25-11-2020 | #8 |
fascinating rhythm Сообщения: 6648
|
Профиль | Отправить PM | Цитировать Iska, это местные реалии. То ли внедренцы какие так написали, то ли здешние программисты.
|
------- Отправлено: 09:09, 26-11-2020 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DJ Mogarych, а… Ну, да, такое бывает.
|
Отправлено: 14:43, 26-11-2020 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|