|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов кроме сегодняшнего |
|
|
CMD/BAT - [решено] Удаление файлов кроме сегодняшнего
|
Пользователь Сообщения: 102 |
Профиль | Отправить PM | Цитировать Здравствуйте,
У меня возникла задачка: в папке имеются логи за несколько лет. Каждый день программа создает новый файл. Все бы ничего, если бы не возникла потребность удалять файлы по причине отсутсвия места на диске. Можно конечно было вручную снести все файлы, но хочется автоматизировать данный процесс. Так вот, как сделать так, чтобы в одной конкретной папке удалялись файлы старше 1-х суток. Программа каждые сутки создает файл типа: ftp20130301.log, вчера ftp20130228.log и так далее..... Заранее спасибо |
|
Отправлено: 15:34, 01-03-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kenwood, ориентируемся на дату/время последней модификации самого файла или же на дату в его имени?
|
Отправлено: 18:21, 01-03-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать ИМХО, имеет смысл хранить заданное кол-во логов, например, 2, а остальные удалять, и не задумываться о датах. Главное, чтобы логи бесконечно не накапливались, а батник в назначенном задании это периодически отслеживал. Так как программа каждые сутки создает файл типа: ftpГГГГММДД.log и если ориентируемся на дату/время последней модификации самого файла, то
@Echo Off Set Where=D:\Tmp FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "%Where%\ftp*.log" /B /A:-D /O:-D /T:W 2^>nul`) DO Echo Del "%Where%\%%f" FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "%Where%\ftp*.log" /B /A:-D /O:-N 2^>nul`) DO Echo Del "%Where%\%%f" @Echo Off FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "ftp*.log" /B /A:-D /O:-D /T:W 2^>nul`) DO Echo Del "%%f" или соответственно FOR /F "usebackq skip=2 delims=" %%f IN (`DIR "ftp*.log" /B /A:-D /O:-N 2^>nul`) DO Echo Del "%%f" По идее, можно совсем обойтись без батника, используя CMD и For в назначенном задании, например: |
------- Последний раз редактировалось megaloman, 01-03-2013 в 23:32. Отправлено: 23:07, 01-03-2013 | #3 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать Надо ориентироваться только на дату в его имени
|
Отправлено: 23:20, 01-03-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Kenwood, тогда можно так:
@echo off setlocal enableextensions enabledelayedexpansion set sDrive=%~d0 set sPath=%~p0 for /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i 1>nul wmic.exe DataFile where "Drive='%sDrive%' AND Path='%sPath:\=\\%' AND FileName<>'ftp%sDateTime:~0,8%' AND Extension ='log'" call Delete endlocal exit /b 0 |
|
Отправлено: 03:07, 02-03-2013 | #5 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать спасибо ограмное, все сработало!!! Так как надо было.
Спасибо всем за помощь, особенно Iska |
Отправлено: 15:26, 04-03-2013 | #6 |
Старожил Сообщения: 147
|
Цитата megaloman:
|
|
Отправлено: 10:36, 06-02-2016 | #7 |
Ветеран Сообщения: 1754
|
Цитата Freddy1984:
|
|
Отправлено: 11:44, 06-02-2016 | #8 |
Старожил Сообщения: 147
|
Цитата Foreigner:
|
|
Отправлено: 14:26, 06-02-2016 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Freddy1984:
Стандартные потоки — Википедия Перенаправление ввода-вывода — Википедия |
|
Отправлено: 14:55, 06-02-2016 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удаление всех файлов из папки кроме батника | composter | Скриптовые языки администрирования Windows | 11 | 30-03-2013 08:25 | |
CMD/BAT - Удаление всех файлов кроме одного в подпапках | SELFY | Скриптовые языки администрирования Windows | 2 | 29-07-2012 15:34 | |
Любой язык - удаление всех символов кроме шаблона | gendalf | Скриптовые языки администрирования Windows | 3 | 19-07-2012 16:21 | |
Любой язык - Удаление файлов старше 5 дней кроме указанного по имени. | Joni | Скриптовые языки администрирования Windows | 6 | 11-07-2012 11:18 | |
MSFT SQL Server - [решено] Удаление баз кроме ... | Butunin Klim | Программирование и базы данных | 5 | 23-04-2009 10:01 |
|