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

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

Ответить
Настройки темы
CMD/BAT - Удаление архива за вчерашнюю дату

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


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

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


Здраствуйте. Вобщем проблема такая, есть бат скрипт, который бэкапит файлы на серваке в архив, а далее копирует их в сетевое хранилище. Причем при создании архива в его имя автоматически вбивается текущая дата, как сделать так, чтобы после того как архив скопируется удалялся архив за предыдущую дату? Заранее огромное спасибо!

Отправлено: 16:16, 11-09-2012

 

Ветеран


Contributor


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

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


Вы не написали ТОЧНО как именуются Ваши файлы, поэтому вот батник, удаляющий файлы, созданные НЕ СЕГОДНЯ, безотносительно к имени, в указанной директории.
Код: Выделить весь код
@Echo off
REM Если дата в формате дд.мм.гггг

Set Folder=D:\Delete\Folder
Set Now=%Date:~3,2%-%Date:~0,2%-%Date:~6,4%

FOR /F "usebackq delims=" %%f IN (`Xcopy /L /D:%Now% "%Folder%\*.*" %Tmp%`) DO Del "%%f" 2>nul

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


Отправлено: 22:22, 11-09-2012 | #2



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

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


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


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

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


у меня вот такой вот скрипт работает

set DIR_BACKUP=j:\BackUp\
set NAME_PC=serverasu\mssql2
Set DIR_BACKUP_DOUBLE=\\vega\BackUp\
md %DIR_BACKUP%
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sdnp TO DISK = N'%DIR_BACKUP%\sdnp.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE ruk TO DISK = N'%DIR_BACKUP%\ruk.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE uva TO DISK = N'%DIR_BACKUP%\uva.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE okp TO DISK = N'%DIR_BACKUP%\okp.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE nariad TO DISK = N'%DIR_BACKUP%\nariad.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sd TO DISK = N'%DIR_BACKUP%\sd.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sed TO DISK = N'%DIR_BACKUP%\sed.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE osnastka TO DISK = N'%DIR_BACKUP%\osnastka.bak' with init"
Echo End wait
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE servicedesk TO DISK = N'%DIR_BACKUP%\servicedesk.bak' with init"
Echo End wait
set NAME_PC=serverasu\mssql1
sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE upp TO DISK = N'%DIR_BACKUP%\upp.bak' with init"
Echo End wait

"C:\Program Files\7-Zip\7z.exe" a %DIR_BACKUP%\BackUp_mssql_%DATE%.7z %DIR_BACKUP%\*.bak
del /f/q %DIR_BACKUP%\sdnp.bak
del /f/q %DIR_BACKUP%\ruk.bak
del /f/q %DIR_BACKUP%\uva.bak
del /f/q %DIR_BACKUP%\okp.bak
del /f/q %DIR_BACKUP%\nariad.bak
del /f/q %DIR_BACKUP%\sd.bak
del /f/q %DIR_BACKUP%\sed.bak
del /f/q %DIR_BACKUP%\osnastka.bak
del /f/q %DIR_BACKUP%\upp.bak

xcopy %DIR_BACKUP%BackUp_mssql_%DATE%.7z %DIR_BACKUP_DOUBLE%


Цитата megaloman:
Вы не написали ТОЧНО как именуются Ваши файлы, поэтому вот батник, удаляющий файлы, созданные НЕ СЕГОДНЯ, безотносительно к имени, в указанной директории.
Код:
@Echo off
REM Если дата в формате дд.мм.гггг
Set Folder=D:\Delete\Folder
Set Now=%Date:~3,2%-%Date:~0,2%-%Date:~6,4%
FOR /F "usebackq delims=" %%f IN (`Xcopy /L /D:%Now% "%Folder%\*.*" %Tmp%`) DO Del "%%f" 2>nul »
Спасибо правда я с трудом представляю куда его тут вставить...

Отправлено: 09:39, 12-09-2012 | #3


Ветеран


Contributor


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

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


Насколько я понял, накапливаются лишние файлы .7z в папке %DIR_BACKUP%
Для моего скрипта указать
Set Folder==j:\BackUp
а в xcopy лучше вместо *.* указать BackUp_mssql_*.7z
Вообще-то после конкретной постановки задачи решение можно сделать красивее.
Код: Выделить весь код
@Echo off
cls

Set Spisok=sdnp.bak ruk.bak uva.bak okp.bak nariad.bak sd.bak sed.bak osnastka.bak upp.bak
Set DIR_BACKUP=j:\BackUp
Set NAME_PC=serverasu\mssql2
Set DIR_BACKUP_DOUBLE=\\vega\BackUp

md %DIR_BACKUP%
FOR %%f IN (%Spisok%) DO (
	sqlcmd -S %NAME_PC% -E -Q "BACKUP DATABASE sdnp TO DISK = N'%DIR_BACKUP%\%%f' with init"
 	Echo End %DIR_BACKUP%\%%f
)

Set Name7z=%DIR_BACKUP%\BackUp_mssql_%DATE%.7z
Set Del7z=%DIR_BACKUP%\BackUp_mssql_*.7z

"C:\Program Files\7-Zip\7z.exe" a %Name7z% %DIR_BACKUP%\*.bak

If Exist %Name7z% (
   FOR %%f IN (%Del7z%) DO If Not %%f==%Name7z% Del %%f
)

FOR %%f IN (%Spisok%) DO Del %DIR_BACKUP%\%%f
Отлаживал этот скрипт весьма приблизительно - у меня нет ни SQL ни 7Z

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


Последний раз редактировалось megaloman, 13-09-2012 в 11:05.


Отправлено: 22:31, 12-09-2012 | #4


Пользователь


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

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


можно еще так:
1. создание архива:
%RAR% %RAR_param% %RAR_arhive%
где:
читать дальше »

%RAR% - путь где лежит архиватор
"C:\Program Files\WinRAR\WinRAR.exe"

%RAR_param% - параметры архивирования (голубым выделен параметр "добавить дату к имени файла" формат можно менять на свой)
a -r -rr15p -os -ow -t -ag+YYYY-MM-DD C:\куда_сохранить_архив

%RAR_arhive% - что архивируем (через пробел)
C:\папка_1\*.* C:\папка_2\*.*


2. удаление старых архивов:
forfiles /P P:\ /M *.* /S /D -5 /C "cmd /c echo Deleted: @PATH >> %DIR_log%erase.log & del @FILE"
где:
читать дальше »

P:\ - диск\папка из которой удаляем файлы
-5 удаляем файлы старше 4 дней
то, что в кавычках вывод результата в cmd для записи в лог файл

Отправлено: 15:16, 18-09-2012 | #5


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


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

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


Скрипт удаляет все в заданной папке, старше указанного времени
читать дальше »

set fso=Wscript.CreateObject("Scripting.FileSystemObject")

dir="C:\mail"
Set f = fso.GetFolder(dir)
Set fc = f.Files
For Each f1 in fc
d= f1.DateCreated
diff=DateDiff("d",d,Now)
if diff>14 Then - кол-во дней сколько хранить
WScript.Echo "DELETE! " & f1.name
fso.DeleteFile(dir & "\" & f1.name)
end if
Next

Отправлено: 18:11, 06-05-2013 | #6



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Распаковка-обновление-удаление архива Добрых_Дел_Мастер Скриптовые языки администрирования Windows 9 22-09-2012 12:05
CMD/BAT - нужно извлечь из архива определенные файлы за текущую дату alek2012 Скриптовые языки администрирования Windows 0 20-06-2012 15:24
Как узнать дату регистрации nazarius Хочу все знать 14 01-02-2009 16:11
Отключился DVD-ROM, не запоминает дату PETER1 Непонятные проблемы с Железом 17 04-09-2006 15:40
Изменить дату Guest Общий по Linux 7 22-07-2004 11:49




 
Переход