|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление архива за вчерашнюю дату |
|
CMD/BAT - Удаление архива за вчерашнюю дату
|
Новый участник Сообщения: 2 |
Здраствуйте. Вобщем проблема такая, есть бат скрипт, который бэкапит файлы на серваке в архив, а далее копирует их в сетевое хранилище. Причем при создании архива в его имя автоматически вбивается текущая дата, как сделать так, чтобы после того как архив скопируется удалялся архив за предыдущую дату? Заранее огромное спасибо!
|
|
Отправлено: 16:16, 11-09-2012 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Вы не написали ТОЧНО как именуются Ваши файлы, поэтому вот батник, удаляющий файлы, созданные НЕ СЕГОДНЯ, безотносительно к имени, в указанной директории.
|
------- Отправлено: 22:22, 11-09-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить 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:
|
|
Отправлено: 09:39, 12-09-2012 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить 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 |
------- Последний раз редактировалось megaloman, 13-09-2012 в 11:05. Отправлено: 22:31, 12-09-2012 | #4 |
Пользователь Сообщения: 102
|
Профиль | Отправить PM | Цитировать можно еще так:
1. создание архива: %RAR% %RAR_param% %RAR_arhive% где: 2. удаление старых архивов: forfiles /P P:\ /M *.* /S /D -5 /C "cmd /c echo Deleted: @PATH >> %DIR_log%erase.log & del @FILE" где: |
|
Отправлено: 15:16, 18-09-2012 | #5 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Скрипт удаляет все в заданной папке, старше указанного времени
|
Отправлено: 18:11, 06-05-2013 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Распаковка-обновление-удаление архива | Добрых_Дел_Мастер | Скриптовые языки администрирования 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 |
|