Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - Нужно ли завершать скрипт

Старожил


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

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


У меня в планировщике win2008R2 по многу раз выполняется vbs-скрипт, начинающийся с нижеприведенных строк и кончающийся только закрытием лог-файла.

Dim WshShell
Dim fso
Dim LogFile
Dim fLog
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
LogFile = Left(WScript.ScriptName,Len(WScript.ScriptName)-4) & ".log"
Set fLog = fso.OpenTextFile(LogFile, 8, True)
...


Иногда срывается выполнения скрипта из-за невозможности запуска программы в нем. После этого, несмотря на удаление зависшего задания в taskmgr, планировщик
прекращает выполнять скрипт и пишет в журнале, что задача запущена, а ее действие и прекращение не наступает, т.е. зависание.
Приходится полностью удалять задачу в планировщике и ее пересоздавать, чтоб дальше работала.
Не может ли быть такое поведение из-за того, что нет WshShell.Quit и закрытия fso ? Или это не обязательно? Сервер я после сбоя не перегружаю, потому что пользователи не дают.

Отправлено: 23:05, 23-11-2019

 

Старожил


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

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


Цитата Iska:
Почему Вы решили, что 1С — именно зависло? »
Если 1с висит в таскменеджере и не заканчивается за 30 сек, то в нем ошибка, которая обычно выдается с табличкой о необходимости переиндексации базы 1с. Т.к. в скрипте 1с должна запускаться 4 раза, то нужно скинуть 4 зависа 1с, когда это произошло. База 1с в любой момент может приподнести такой "сюрприз", приходится вручную отслеживать.

Цитата Iska:
wscript.exe /?
прочитайте. »
Непонятно про Logo. У меня по-умолчанию никаких сведений не выдается, когда vbs запускаю.

Отправлено: 22:26, 26-11-2019 | #11



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

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


Ветеран


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

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


pavsem7, так это не «зависло». Как именно у Вас в скрипте организован запуск 1С?

Цитата pavsem7:
У меня по-умолчанию никаких сведений не выдается, когда vbs запускаю. »
Это потому, что у Вас wscript.exe хостом по умолчанию является. Попробуйте Win-R, cmd.exe, и там — cscript.exe //logo и cscript.exe //nologo.

Отправлено: 02:17, 27-11-2019 | #12


Старожил


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

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


Цитата Iska:
Как именно у Вас в скрипте организован запуск 1С? »
Вот так:
Код: Выделить весь код
zapuskV7 = """C:\Program Files (x86)\1Cv77\BIN\1cv7.exe"""
basefolder   = "C:\folder"
progV7 basefolder,"C:\1\obr.ert","78"
Sub progV7(basef,obr,parametr)
	WriteLog "   ------------------------------"
	WriteLog "   start: " & obr
	Set xFile = fso.CreateTextFile(basef & "\ExtForms\Oper.txt",True)
	xFile.WriteLine obr
	xFile.WriteLine parametr
	xFile.Close
	strParam   = " enterprise /d" & basef & " /nUser /pPass"
	WriteLog "     " & basef
	If SV7(basef) = True Then 
		nErrCode = WshShell.Run (zapuskV7 & strParam,1,True)	
		WriteLog "     Error code WshShell.Run: " & nErrCode
	End If
	WriteLog "   end  : " & obr
End sub
Function SV7(dir)
SV7 = True
fso.CopyFile "C:\folder\1susers.dbf", "C:\1\"
If Err.number <> 0 then
	'база монопольно открыта
        WriteLog "     start cancelled [open exclusively], cant open dbf file ErrNumber=" & Err.Number
	err.clear
        On Error GoTo 0
        SV7 = False
	Exit Function
End if
Sub WriteLog(strLine)
	fLog.WriteLine Date & " (" & Time & ") " & strLine
end sub
Строчка запуска progV7 ... повторяется 4 раза с разными параметрами для обработки obr.ert на языке 1cv7

Отправлено: 22:44, 27-11-2019 | #13


Ветеран


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

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


Цитата pavsem7:
Код: Выделить весь код
nErrCode = WshShell.Run (zapuskV7 & strParam,1,True)
»
Поскольку третий аргумент — True, нет никакого способа в принципе что-либо сделать: код в этом месте будет тупо стоять и ожидать завершения вызванного процесса.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:37, 28-11-2019 | #14


Аватара для Charg

Ветеран


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

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


pavsem7, файл с расширением *.vbs это просто текстовый файл. А вот расширение само по себе говорит о том что с этим текстом внутри файла дальше делать. В данном случае запуская планировщиком c:\script.vbs ты по факту запускаешь обработчик (wscript.exe или cscript.exe), которому на вход подаётся путь к коду (тексту) который надо выполнить.

Аналогия для лучшего понимания - когда ты открываешь Документ.docx ты ведь не запускаешь процесс Документ.docx. А запускается Microsoft Word (WINWORD.exe) которому на вход подаётся путь к Документ.docx. Тут то же самое.

Отправлено: 12:05, 28-11-2019 | #15


Старожил


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

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


Цитата Iska:
нет никакого способа в принципе что-либо сделать »
Может быть, можно как-то отключать выполнение по времени? Например, если выполняется больше 2 минут, то снять задачу.

Отправлено: 10:54, 29-11-2019 | #16


Ветеран


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

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


pavsem7, можно. Покажите скриншот дерева процессов wcsript.exe|cscript.exe → 1C….exe из Process Explorer'а в моменты а) нормальной работы 1С и б) «зависания» 1С.

Тем не менее, продолжаю настаивать на том, что разбираться надо с 1С, а не лепить костыли.

Отправлено: 09:55, 30-11-2019 | #17



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Можно ли переписать этот vbs скрипт в бат скрипт ufooo000 Скриптовые языки администрирования Windows 1 07-02-2017 08:52
CMD/BAT - [решено] Можно ли этот (.vbs) скрипт интегрировать в (.bat) скрипт? ufooo000 Скриптовые языки администрирования Windows 6 01-01-2017 10:23
Windows server 2003, можно ли разрешить пользователю завершать сеансы? vsafonin Microsoft Windows NT/2000/2003 0 23-03-2015 21:08
V. 2010 - В АД уже есть exchange 2003, нужно переехать на 2010, нужно ли обновлять схему АД akaAmigos Microsoft Exchange Server 54 30-07-2012 14:10
Можно ли (и главное нужно ли) установить INF драйвера для Windows2000 на WindowsXP? Foma Microsoft Windows 2000/XP 7 24-03-2005 11:48




 
Переход