|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS |
|
|
VBS/WSH/JS - [решено] Кавычки внутри кавычек в VBS
|
Старожил Сообщения: 474 |
Возможно вопрос банален, но никак не могу разобраться, как использовать кавычки внутри кавычек в VBS. То есть, например даже элементарная команда
выдаёт ошибку. Хочу напечатать именно Меню "Пуск" ,а не Меню Пуск. Так же и с другими командами. Пишу скрипт добавляющий строки в файл и в этих строчках есть кавычки. Был бы признателен за помощь.
|
|
Отправлено: 00:31, 15-01-2011 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Спасибо, Iska! Это хорошее решение, но хотелось бы доработать этот код с такой целью, что: а вдруг сервис завис и простая остановка тут не поможет? Тогда, подождав секунд 10, будет необходимо убить соответствующий процесс и запустить сервис заново. Как будет выглядеть скрипт именно с такой задачей?
|
Последний раз редактировалось C0D3X, 20-02-2015 в 05:05. Отправлено: 04:58, 20-02-2015 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Во-первых, нужно не снимать процесс, а разбираться в причинах зависания сервиса. Во-вторых, логика «остановить сервис; если не останавливается — снять процесс сервиса, затем запустить сервис заново» мне не понятна.
|
Отправлено: 07:07, 20-02-2015 | #22 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Просто все это сейчас делается руками по звонку одного из филиалов - надо автоматизировать) |
|
Отправлено: 09:40, 20-02-2015 | #23 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать У меня не случалось, чтобы служба «FileZilla Server» зависала. Если у Вас, как Вы пишете:
Цитата C0D3X:
Цитата C0D3X:
|
||
Отправлено: 10:04, 20-02-2015 | #24 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, меня полностью устраивает ваше решение
Все что мне нужно это доработать это решение до примерно такого: Option Explicit Dim strServiceName Dim objSWbemObjectEx strServiceName = "messenger" With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2") With .Get("Win32_Service.Name='" & strServiceName & "'") If .State = "Running" Then If Not .StopService() = 0 Then Sleep 20000 'Ждем - может процесс все-таки с задержкой, но завершится If .State = "Running" Then 'Если и спустя 20 секунд все еще запущен,то 'Вызов функции поиска ID процесса, отвечающего за зависший сервис '"Убийство соответствующего PID 'Вызов функции стартующей сервис End If End If End If End With End With WScript.Quit 0 Спасибо! Цитата Iska:
|
|
Отправлено: 17:26, 20-02-2015 | #25 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать C0D3X, у Вас нет задачи. У Вас есть придуманное якобы решение, которое ни разу не решает реальной задачи.
Что на самом деле происходит со службой? Как определяете, что она «зависает»? Что сообщает ОС о «зависшей» службе? Что в журналах событий? Что в логах самой службы? Каково состояние службы в этот момент? Вот какие вопросы надо задавать, и какие задачи решать, вместо того, чтобы тупо периодически перезапускать службу в процессе работы. Это не решение, это извращение. Попытка закрыть глаза на реально существующую проблему. Я, конечно, нарисую Вашу хотелку, но проверить её работоспособность банально не смогу, поскольку у меня никогда такой проблемы с «FileZilla Server» не возникало. Скрытый текст
Option Explicit Dim strServiceName Dim objSWbemServicesEx Dim objSWbemObjectEx strServiceName = "FileZilla Server" Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2") Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_Service.Name='" & strServiceName & "'") If objSWbemObjectEx.Started Then If objSWbemObjectEx.AcceptStop Then If objSWbemObjectEx.StopService() = 0 Then Do WScript.Sleep 100 Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_Service.Name='" & strServiceName & "'") Loop While objSWbemObjectEx.Started StartService Else WScript.Echo "Can't stop service [" & strServiceName & "]." With objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(objSWbemObjectEx.ProcessID) & "'") If .Terminate() = 0 Then StartService Else WScript.Echo "Can't terminate process of service [" & strServiceName & "]." End If End With End If Else WScript.Echo "Service [" & strServiceName & "] can't be stopped." End If Else StartService End If Set objSWbemObjectEx = Nothing Set objSWbemServicesEx = Nothing WScript.Quit 0 '============================================================================= '============================================================================= Sub StartService() If objSWbemObjectEx.StartService() = 0 Then Do WScript.Sleep 100 Set objSWbemObjectEx = objSWbemServicesEx.Get("Win32_Service.Name='" & strServiceName & "'") Loop Until objSWbemObjectEx.Started Else WScript.Echo "Can't start service [" & strServiceName & "]." End If End Sub '============================================================================= |
Отправлено: 09:47, 21-02-2015 | #26 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, огромное спасибо! Абалденный код!
![]() А на счет вопросов: у меня тоже пока не было проблем, но поднять этот сервис пришлось совсем недавно и большого опыта работы с ним нет, а в отпуск уходить совсем скоро... Так вот такая последовательность действий решает 99% процентов проблем, которые могут случиться с сервисом, а это значит, что меня не вытащат посреди отпуска на работу из-за того, что не работает FTP. Возможно траблы не случаться вобще никогда и этот код так никогда на 100% и не сработает, но ведь предвидеть и попытаться предотвратить лучше, чем предвидеть и ждать "авось".... Согласны? ![]() Еще раз большое спасибо! |
Последний раз редактировалось C0D3X, 22-02-2015 в 14:06. Отправлено: 13:59, 22-02-2015 | #27 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата C0D3X:
|
|
Отправлено: 20:23, 22-02-2015 | #28 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, голову осторожнее она еще пригодится и не только тебе. От чего столько негодующих эмоций?! Тебя попросили помочь и ты помог, причем этим кодом дал много пищи для размышлений о том как автоматизировать другие процесс, так как, например, запуск 1с с определенной обработкой, перезапуск процессов отвечающих за связь с торг.представителями. Короче, Iska, Все норм! твой код послужил примером для написания еще 3 скриптов, так что что жил, то не зря
![]() ![]() |
Отправлено: 10:29, 23-02-2015 | #29 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Нестандартные кавычки | EN130 | Microsoft Windows 2000/XP | 5 | 13-10-2010 15:20 | |
Разное - [решено] Обработка кавычек в семерке | pve | Microsoft Windows 7 | 6 | 28-01-2010 08:03 | |
VBS/WSH/JS - Помогите редактировать Autorun_Disable.vbs на Autorun_Enable.vbs | nod201 | Скриптовые языки администрирования Windows | 0 | 05-12-2009 05:44 | |
Разное - [решено] передача кавычек в XmlHttpRequest | harrique | Программирование и базы данных | 3 | 26-01-2009 08:29 | |
[решено] svcpack.inf, двойные кавычки в параметрах | _DRON_ | Автоматическая установка Windows 2000/XP/2003 | 2 | 23-06-2008 15:37 |
|