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

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

Ответить
Настройки темы
Любой язык - Удаление файла по дате в Имени

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


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

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


Привет
Нужна помощь в создании скрипта, который удалял бы файлы, по дате а имени (формата название_yyyymmdd.bd)
Суть в том, что бы оставлять 3-5 самых свежих файла (по дате в названии) остальные удалять


перепробовал совмещать различные варианты, но для примера в CMD\BAT не хочет считывать имя

Код: Выделить весь код
@echo off
SetLocal EnableExtensions

:: папка, с файлами вида yyyymmdd для удаления
set "Folder=C:\temp\test"& set "rs=bd"
 pushd "%Folder%"

For /F "delims=" %%a in ('forfiles /d -3 /m "*%DATE:-4%%DATE:~3,2%%DATE:~6,2%.bd"') do if not defined "%%a" echo del /f /q "%rs%%%a"
exit /b
это не обязательно должен быть cmd/bat
главное, что бы работало
спасибо

Отправлено: 23:19, 14-08-2019

 

Ветеран


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

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


Цитата Charg:
Каким образом? »
CreationTime замещается на текущее при копировании файла. LastWriteTime замещается на текущее при любой модификации содержимого и сохранении.

Цитата megaloman:
Iska, А зачем двойной цикл? »
megaloman, не пойму, где у меня двойной цикл?!

Отправлено: 12:54, 15-08-2019 | #11



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

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


Ветеран


Contributor


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

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


Iska, Простите великодушно, спешка, нет у Вас двойного цикла, а жена гонит на охоту на базар за мамонтом на обед ...

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


Отправлено: 13:00, 15-08-2019 | #12


Аватара для Charg

Ветеран


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

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


Цитата Iska:
LastWriteTime замещается на текущее при любой модификации содержимого и сохранении. »
Если файл бд меняется - меняется и дата актуальности бэкапа, разве нет?

Отправлено: 13:07, 15-08-2019 | #13


Ветеран


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

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


megaloman, спасибо, ясно, сочувствую.

Цитата Charg:
Если файл бд меняется - меняется и дата актуальности бэкапа, разве нет? »
Charg, а причём тут это?

Нам нужно удержать значение некоей конкретной даты/времени привязанным к конкретному файлу. И дата создания, и дата последней модификации файла для этого не годятся (даже если это именно одно из них по сути), поскольку оригинальные даты в любой момент могут быть утрачены неловким или бессознательным движением руки, в то время, как потребное значение даты/времени, тупо вставленное в имя файла, для утраты требует исключительно сознательных усилий.

Отправлено: 14:23, 16-08-2019 | #14


Аватара для Charg

Ветеран


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

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


Цитата Iska:
а причём тут это? »
А при том что если существующий бэкап сделанный в дату N был изменён - он перестал быть бэкапом на дату N, несмотря на то что имя файла свидетельствует что это всё еще бэкап на момент даты N.
Да, чисто технически, есть возможность изменить файл так чтобы дата изменения обновилась а сам бэкап остался рабочим и валидным - но стоит ли предполагать что над бэкапом произвели именно такие действия? Вопрос не совсем однозначный но, имхо, ответ - нет, бэкап перестал быть бэкапом, во всяком случае на момент той даты которая написана в его имени.

Отправлено: 15:05, 16-08-2019 | #15


Ветеран


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

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


Цитата Charg:
А при том что если существующий бэкап сделанный в дату N был изменён - он перестал быть бэкапом на дату N, несмотря на то что имя файла свидетельствует что это всё еще бэкап на момент даты N. »
Коллега, сие как-то противоречит тому, о чём я говорю? Нет.

А чтобы быть уверенным в его валидности — тут уже другие методы нужны: блокировка от изменений, контрольные суммы и прочее.

Отправлено: 15:27, 16-08-2019 | #16


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


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

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


Цитата megaloman:
Имхо, еще лучше так:

Код: Выделить весь код
@Echo Off
    Call :DelData "Z:\Box_ARC\Название бэкапа базы_20??????.bd" 5
Exit /B
:DelData
    FOR /F "usebackq skip=%2 delims=" %%f IN (`2^>nul Dir %1 /B /A:-D /O:-N`) DO Echo Del "%~dp1%%f"
Exit /B
Особенно если надо обработать бэкапы нескольких баз »
Цитата Iska:

Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion
set sSourceFolder=C:\Мои проекты\0271\Source
for /f "usebackq skip=5 delims=" %%i in (
    `2^>nul dir /b /a:-d /o:-n "%sSourceFolder%\название_*.bd"`
) do echo del /f /q "%sSourceFolder%\%%~i"
endlocal
exit /b 0
Для реального удаления уберите echo. »
Оба Варианта работают, Спасибо

По датам в атрибутах Создания: Сам бекап настраивал другой пользователь, грубо говоря, но разных серверах стоит батник, который раз в сутки копирует на один сервер в соответствующую папку файл базы, сохраняя на конечном сервере с датой текущей в имени. И каким то образом, дата создания и изменения остаются у всех "Бекапов" одинаковыми, и не меняются. Если бы они менялись, то на основе даты изменения и создавал бы батник, но тут то и был зарыт камень преткновения и задачу поставили смотреть именно в дату в имени файла.

Последний раз редактировалось kasab, 17-08-2019 в 10:45.


Отправлено: 10:17, 17-08-2019 | #17



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Раскидать файлы по папкам согласно дате в имени файла spkvvs Скриптовые языки администрирования Windows 17 24-01-2024 16:03
VBS/WSH/JS - VBS удаление файлов в папке по определенному имени и дате старше n Vooodi4356 Скриптовые языки администрирования Windows 5 25-03-2018 14:02
CMD/BAT - [решено] Удаление старых файлов по дате и имени, если их больше n NinjaScript Скриптовые языки администрирования Windows 2 04-03-2015 14:27
CMD/BAT - Удаление файлов по дате interminable Скриптовые языки администрирования Windows 1 07-06-2012 15:48
CMD/BAT - Удаление файлов по дате ADGJMPTW Скриптовые языки администрирования Windows 1 10-10-2010 20:08




 
Переход