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

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

Ответить
Настройки темы
CMD/BAT - Копирование, регистрация и удаление библиотек

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


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

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


Здравствуйте, подскажите пожалуйста как решить такую задачу:
Есть папка в которой лежит proga.ехе и 10 штук dll-ок (1.dll, 2.dll,...10.dll)
8 из 10 dll-ок нужно скопировать в папку "%windir%\system32" и 6 из 8-ми скопированных зарегистрировать командой regsvr32 /s 1.dll, regsvr32 /s 2.dll, и т.д.
Hо если в system32 эти библиотеки уже есть, то копировать их и регестрировать не надо.
Потом нужно запустить proga.ехе, а после закрытия программы дерегестрировать скопированные библиотеки и удалить их из system32.
Как можна реализовать такую задачу пакетным файлом?
Зарание спасибо.

Отправлено: 15:54, 01-12-2009

 


Moderator


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

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


Toltec, пример для одной библиотеки:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

If Not Exist %windir%\system32\1.dll (
  Copy 1.dll %windir%\system32
  Regsvr32 /s %windir%\system32\1.dll
)
Start /Wait proga.exe
If Exist %windir%\system32\1.dll (
  Regsvr32 /u /s %windir%\system32\1.dll
  Del /Q %windir%\system32\1.dll
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:03, 01-12-2009 | #2



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

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


Аватара для Xaegr

Сотрудник Microsoft


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

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


Цитата Petya V4sechkin:
Toltec, пример для одной библиотеки »
Библиотека будет удалена после выполнения даже если она и раньше присутствовала. А ведь она может быть необходима и для других приложений. Как я понял автор хочет удалить только те библиотеки которые были добавлены.

К сожалению не возьмусь писать это на batch, но на powershell будет так:
Код: Выделить весь код
$sourcedir = "\\server\share"
$dlls = dir $sourcedir | select -expand name | where {-not (test-path "$env:windir\system32\$_")}
$dlls | foreach {cp "$sourcedir\$_" "$env:windir\system32\$_";  regsvr32 /s "$env:windir\system32\$_"}
proga.exe | out-null
$dlls | foreach {del "$env:windir\system32\$_"}
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 01-12-2009 | #3


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


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

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


Цитата Xaegr:
Как я понял автор хочет удалить только те библиотеки которые были добавлены. »
Именно так и хочется, простите что не полностю прояснил задачу...
Xaegr, к сожалению с PowerShell не знаком, не знаю даже что это, но Спасибо за понимание и помощь...
Petya V4sechkin, Спасибо. Может можно сделать так, чтоб создался список скопированных библиотек, а потом по списку их дерегистрировать и удалить? Не знаю реально ли такое реализовать?

Отправлено: 18:06, 01-12-2009 | #4



Moderator


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

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


Toltec, простейший вариант:
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set Copied_1=
If Not Exist %windir%\system32\1.dll (
  Copy 1.dll %windir%\system32
  Regsvr32 /s %windir%\system32\1.dll
  Set Copied_1=1
)
Start /Wait proga.exe
If Defined Copied_1 (
  Regsvr32 /u /s %windir%\system32\1.dll
  Del /Q %windir%\system32\1.dll
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:48, 02-12-2009 | #5


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


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

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


Petya V4sechkin, спасибо большое! Только скажите пожалуйста куда в этом скрипте прописать другие библиотеки? Я так понял это пример для одной, а для нескольких нужно написать так ? :
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

Set Copied_1=
If Not Exist %windir%\system32\1.dll (
  Copy 1.dll %windir%\system32
  Regsvr32 /s %windir%\system32\1.dll
  Set Copied_1=1
)
Set Copied_2=
If Not Exist %windir%\system32\2.dll (
  Copy 2.dll %windir%\system32
  Regsvr32 /s %windir%\system32\2.dll
  Set Copied_2=2
)
Start /Wait proga.exe
If Defined Copied_1 (
  Regsvr32 /u /s %windir%\system32\1.dll
  Del /Q %windir%\system32\1.dll
)
If Defined Copied_2 (
  Regsvr32 /u /s %windir%\system32\2.dll
  Del /Q %windir%\system32\2.dll
)
Простите за настойчивость, но я только начинаю изучать пакетные файлы и многого не понимаю.... Спасибо.

Отправлено: 11:01, 02-12-2009 | #6



Moderator


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

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


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

Отправлено: 11:04, 02-12-2009 | #7


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


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

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


Petya V4sechkin, Спасибо огромное за помощь!!!

Отправлено: 11:13, 02-12-2009 | #8


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


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

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


Здравствуйте, мне конечно не удобно еще раз переспрашивать и забирать ваше время, но последний скрипт у меня не работает...
Я сделал новый, на основе первого ответа от Petya V4sechkin, этот все делает как надо, только часть удаления хочется подправить, т.е. хочется, чтобы удалял только скопированные библиотеки...
Есть два вопроса: 1. Можно сделать так, чтобы в папке, рядом с пакетным файлом, создавался текстовый файл (1.тхт), со списком скопированных библиотек ? (Дальше я уже сам, сделаю удаление по этому списку...)

2. команда
Код: Выделить весь код
If Not Exist %windir%\system32\1.dll (
  Copy 1.dll %windir%\system32
  Regsvr32 /s %windir%\system32\1.dll
означает: Если в папке %windir%\system32 нет библиотеки 1.dll, то скопировать 1.dll в %windir%\system32 и зарегестрировать 1.dll... а если библиотека 1.dll есть, то она все равно будет зарегистрирована или в даном случае условие (If Not Exist) отменяет и регистрацию библиотеки? Объясните мне пожалуйста, не понимаю как тут работает...

Зарание спасибо!

Отправлено: 11:54, 07-12-2009 | #9



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Конкурс - Подробное руководство по использованию библиотек OSZone Microsoft Windows 7 10 11-12-2009 22:11
Как сделать через ГП автоматическое копирование библиотек в папку system32 ? zegerman Автоматическая установка приложений 7 01-12-2009 16:15
Изучение библиотек Windows morgan1991 Хочу все знать 7 11-03-2009 03:22
Лицензирование библиотек Alexander_Grig Лицензирование продуктов Microsoft 10 02-06-2007 14:59
Сборка библиотек 1Space Программное обеспечение Linux и FreeBSD 1 08-02-2007 21:24




 
Переход