CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
-
amel27
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
в таком случае он удаляет только то, что в текущем месяце, а мне надо еще удалить все прошлые записи
-
Sirimika
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
Sirimika, да нет, для каждого ключа (имя файла без последних двух цифр месяца числа) скрипт оставляет только первый по порядку, все последующие файлы с таким же ключом удаляются:
Код:
Код:
Код: Выделить всё
базаA-20101107.bak - оставить
базаA-20101108.bak - удалить
базаA-20101110.bak - удалить
|-----------|
ключ-
Sirimika
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
amel27, это я поняла. В итоге получим, бэкап с каждой базы за первое число каждого месяца. Но мне требуется получить только за текущий месяц.
У меня лежит куча бэкапов за различные месяца, мне надо чтобы в конце месяца отработал батник и удалил все кроме 3-х бекапов каждой базы текущего месяца.
Пример того что должно остаться:
базаA-20101107.bak
базаБ-20101108.bak
базаС-20101107.bak
То что останется если отработает этот батник:
базаA-20101107.bak
базаБ-20101108.bak
базаС-20101107.bak
базаA-20101007.bak
базаБ-20101008.bak
базаС-20101007.bak
базаA-20100907.bak
базаБ-20100908.bak
базаС-20100907.bak
У меня лежит куча бэкапов за различные месяца, мне надо чтобы в конце месяца отработал батник и удалил все кроме 3-х бекапов каждой базы текущего месяца.
Пример того что должно остаться:
базаA-20101107.bak
базаБ-20101108.bak
базаС-20101107.bak
То что останется если отработает этот батник:
базаA-20101107.bak
базаБ-20101108.bak
базаС-20101107.bak
базаA-20101007.bak
базаБ-20101008.bak
базаС-20101007.bak
базаA-20100907.bak
базаБ-20100908.bak
базаС-20100907.bak
-
amel27
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
Цитата Sirimika:
отработал батник и удалил все кроме 3-х бекапов каждой базы текущего месяца
тогда уж "кроме 1-го бэкапа каждой базы ...":
Код:
отработал батник и удалил все кроме 3-х бекапов каждой базы текущего месяца
CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
тогда уж "кроме 1-го бэкапа каждой базы ...":
Код:
Код: Выделить всё
@echo off
SetLocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b/on *.bak') do (
set "$na=%%~na"& set "$b=$_!$na:~0,-8!"& set "$m=!$na:~-8,6!"
if defined !$b! del "%%a"
if not defined !$b! if "!$m!"=="%DATE:~-4%%DATE:~3,2%" (
set "!$b!=%%a") else del "%%a")-
Sirimika
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
Добрый день.
Я наверно опять с глупым вопросом, но не могли бы вы пояснить один момент:
переменная $b принимает такие значения как $b=$_mysql- ($_psql-, $_www-)
На этапе
Код:
считается что $b не определена, но после того, как один раз отработает
Код:
, переменная принимает одно из значений $b=mysql-20101015.bak (psql-20101015.bak,www-20101015.bak).
Не понимаю когда $b становиться опять не определена, почему остаются все три файла mysql, psql, www, а не один mysql
Буду очень признательна за подробный ответ.
Я наверно опять с глупым вопросом, но не могли бы вы пояснить один момент:
переменная $b принимает такие значения как $b=$_mysql- ($_psql-, $_www-)
На этапе
Код:
Код: Выделить всё
if defined !$b! del "%%a"считается что $b не определена, но после того, как один раз отработает
Код:
Код: Выделить всё
set "!$b!=%%a", переменная принимает одно из значений $b=mysql-20101015.bak (psql-20101015.bak,www-20101015.bak).
Не понимаю когда $b становиться опять не определена, почему остаются все три файла mysql, psql, www, а не один mysql
Буду очень признательна за подробный ответ.
-
gora
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
Цитата Sirimika:
не могли бы вы пояснить
Попробую.
Есть переменная $b, мы определяем ее значение:
Код:
Мы можем проверить, определена ли у нас эта переменная $b, так:
Код:
А такое написание:
Код:
проверяет не переменную $b, а переменную с именем содержащимся в переменной $b, т.е., в нашем случае это переменная с именем name1
Соответственно эта строка:
Код:
присваивает переменной name1 значение из переменной %%a
не могли бы вы пояснить
CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
Попробую.
Есть переменная $b, мы определяем ее значение:
Код:
Код: Выделить всё
set "$b=name1"Мы можем проверить, определена ли у нас эта переменная $b, так:
Код:
Код: Выделить всё
if defined $b ...А такое написание:
Код:
Код: Выделить всё
if defined !$b! ...проверяет не переменную $b, а переменную с именем содержащимся в переменной $b, т.е., в нашем случае это переменная с именем name1
Соответственно эта строка:
Код:
Код: Выделить всё
set "!$b!=%%a"присваивает переменной name1 значение из переменной %%a
-
Sirimika
Re: CMD/BAT - [решено] Удалить все файлы из папки кроме нужных
gora, огромное спасибо. Теперь все стало понятно и просто 
