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

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

Ветеран


Contributor


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

Профиль | Отправить 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 будет иметь вид
Код: Выделить весь код
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"
Чуть не забыл, чтобы батник реально удалял файлы, уберите слово Echo (я его вставил для отладки) в For перед командой Del

По идее, можно совсем обойтись без батника, используя CMD и For в назначенном задании, например:
Код: Выделить весь код
cmd /Q /C FOR /F "usebackq skip=2 delims=" %f IN (`DIR "D:\Tmp\ftp*.log" /B /A:-D /O:-N`) DO Del "D:\Tmp\%f" >nul

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 01-03-2013 в 23:32.

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

Отправлено: 23:07, 01-03-2013 | #3