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

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

Ответить
Настройки темы
CMD/BAT - [решено] Бэкап перед применением патча

Старожил


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

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


Доброго времени суток. Помогите реализовать скрипт - задача такая: есть некий игровой сервер - директория с файлами и кучей вложенных директорий. Есть к нему патчи, которые распространяются в виде архива с такими же вложенными директориями и файлами. Что нужно - делать бэкап перед применением каждого патча, чтобы можно было его откатить. Вручную смотреть, какие файлы изменятся не выход, там иногда до сотни файлов меняется. Делать бэкап директории с сервером полностью - тоже не выход, слишком много весит. Нужен скрипт, который просканирует обе директории - сервера и патча - со вложенными директориями и файлами, выдаст список заменяемых патчем файлов и сохранит резервные копии заменяемых файлов с сохранением структуры директорий. Ну и ещё, желательно, чтобы писались в лог добавленные файлы и папки, которых не было на сервере, но есть в патче.

Отправлено: 14:15, 13-08-2010

 

Аватара для gora

Ушёл из жизни


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

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


Anonymоus, попробуйте.
Из упрощений: предполагается, что в patch нет пустых папок и файлов без расширения (не захотелось с ними возиться). Папка backup пересоздается при запуске скрипта иначе в ней будет "каша" при запуске с разными патчами.
Код: Выделить весь код
@Echo Off
:: Кодировка файла Кириллица DOS (866). Лог файл содается в этой же кодировке
SetLocal enabledelayedexpansion
Set server=server
Set patch=patch
Set backup=backup
Set log=log.txt

RD /S/Q "%backup%" 1>Nul 2>Nul
MD "%backup%"
For /F "UseBackQ Delims=" %%I In (`Dir "%patch%" /S/B 2^>Nul`) Do Call :_copyF "%%I"
Echo Есть в %server%, помещены в %backup%:>%log%
Echo ===================================================>>%log%
Copy %log% + y%log% %log%>Nul
Echo.>>%log%
Echo Нет в %server%, добавлены из %patch%:>>%log%
Echo ===================================================>>%log%
Copy %log% + n%log% %log%>Nul
Echo.>>%log%
Del y%log% n%log%>Nul
Echo.
Pause
Exit

:_copyF
If "%~x1"=="" GoTo :EOF
Set nt=%~1
Set nt=!nt:*%patch%\=!
Set n1=%~nx1
Set nt1=!nt:%n1%=!
If Exist "%server%\%nt%" (
	Echo %server%\%nt%>>y%log%
	Echo %server%\%nt%
	xCopy %server%\%nt% %backup%\%nt1%>Nul
) Else (
	Echo %server%\%nt%>>n%log%
)
GoTo :EOF

Последний раз редактировалось gora, 13-08-2010 в 21:35.

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

Отправлено: 16:23, 13-08-2010 | #2



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

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


Старожил


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

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


Большое спасибо, именно то, что нужно.

Отправлено: 18:21, 13-08-2010 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] После патча, программа установки не видит диск! keys00 Проект WinStyle 19 01-10-2009 15:09
Интерфейс - Как вернуть после патча UXTheme Patch? djbub Microsoft Windows 2000/XP 1 24-07-2009 05:26
Проблема со стилем оформления после патча uxtheme.dll Vitasphere Microsoft Windows 2000/XP 8 16-12-2006 06:34
Фильтрация, с применением LDAP запросов в AD Anik Microsoft Windows NT/2000/2003 2 20-11-2006 14:31
Проблема с применением политики домена karnage Microsoft Windows NT/2000/2003 7 29-04-2004 19:09




 
Переход