Снегопат https://snegopat.ru/forum/ |
|
Запуск снегопата в пакетном режиме https://snegopat.ru/forum/viewtopic.php?f=1&t=547 |
Страница 1 из 2 |
Автор: | sosnae [ 20 сен 2013, 09:24 ] |
Заголовок сообщения: | Запуск снегопата в пакетном режиме |
Кто-то пробовал запустить снегопат в из bat файлов и что бы дождаться завершения? Хочу автоматизировать некоторые вещи, но вот как запустить starter что бы дождаться завершения не знаю. |
Автор: | artbear [ 20 сен 2013, 10:43 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Женя, как-то давно пробовал в качестве упражнения, не получилось, бросил. Также интересен ответ. ЗЫ если Саша не сможет помочь, можно попробовать отследить процессы 1С по родительскому процессу и дождаться завершения найденных подчиненных процессов. есть скрипт на PowerShell, который выполняет этот код (через ВМИ или напрямую, через PowerShell-фичи) |
Автор: | artbear [ 20 сен 2013, 10:51 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Вот код PowerShell (можно использовать WMI, например, в бат-файле или собственном js-скрипте) Код: function Start-ProcessTree([string]$FilePath = $(Read-Host "Supply a value for the FilePath parameter"),[string]$ArgumentList,[int]$TimeoutMin = 60,[switch]$WaitForChildProcesses) { $Timeoutms = $TimeoutMin * 60 * 1000 $ProcessStartInfo = New-Object System.Diagnostics.ProcessStartInfo $FilePath if ($ArgumentList) { $ProcessStartInfo.Arguments = $ArgumentList } $Process = [System.Diagnostics.Process]::Start($ProcessStartInfo) $ProcessId = $Process.Id $ProcessStartTime = $Process.StartTime $ProcessCompleted = $Process.WaitForExit($Timeoutms) while ($WaitForChildProcesses -and $ProcessCompleted) { [array]$ChildProcesses = Get-WmiObject Win32_Process -Filter "ParentProcessId = $ProcessId" if (!$ChildProcesses.Count) { break } $Elapsedms = (New-TimeSpan $ProcessStartTime (Get-Date)).TotalMilliseconds if ($Elapsedms -lt $Timeoutms) { Start-Sleep -Seconds 1 } else { $ProcessCompleted = $false } } return $ProcessCompleted } Вызов делается так (стартуем общий стартер 1С и ждем завершения подчиненных процессов Код: # Указываем путь к 1С и проверяем наличие.
$str1CPath='C:\Program Files (x86)\1cv82\common\1cestart.exe' if (!(Test-Path $str1CPath)) { "1C is missing at $str1CPath" ; exit 13 } # Starting with default timeout 60 minutes $Finished = Start-ProcessTree $str1CPath $arguments1C -WaitForChildProcesses $EndDate = Get-Date -uFormat %Y-%m-%d $EndTime = Get-Date -uFormat %H:%M:%S if ($Finished) { "Success. Job finished $EndDate at $EndTime" | Write-LogFile $strLogName } else { "Error. Job stopped by timeout $EndDate at $EndTime" | Write-LogFile $strLogName exit 10 } |
Автор: | Magister [ 20 сен 2013, 12:24 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Когда-то Саша выкладывал инструкции, там ещё DLL от 1С нужно было патчить. Только у меня так и не заработало, и я забил. |
Автор: | orefkov [ 25 сен 2013, 10:01 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Я подумаю, может доработаю стартер для этого дела. |
Автор: | artbear [ 25 сен 2013, 18:54 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Сделай, пожалуйста. Мне, например, это нужно для запуска тестов Снегопата и его плагинов/скриптов в ночных сборках или просто по команде. |
Автор: | Diversus [ 25 дек 2013, 13:33 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
Добрый день. Прошло уже много времени с последнего сообщения. Есть успехи в запуске снегопата из bat-файла? |
Автор: | the1 [ 26 дек 2013, 13:43 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
а что, WshShell.Run(<Command>,<WindowStyle>,<WaitOnReturn>) уже не работает? |
Автор: | orefkov [ 26 дек 2013, 13:49 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается. |
Автор: | Diversus [ 27 дек 2013, 11:33 ] |
Заголовок сообщения: | Re: Запуск снегопата в пакетном режиме |
orefkov писал(а): нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается. А можно ли реализовать возможность ввести запуск аналогично стартеру 1С при запуске для стартера снегопата, что бы запустить конфигуратор сразу с запущенным снегопатом, но без диалогового окна? Что-то типа: Код: "C:\Snegopat\core\starter.exe" DESIGNER /S"server-1C\ZUP" /N"Админ" /P"12345" Очень нужная штука, ибо можно настроить быстрый запуск нужной конфы из bat-файла, использовать в сторонних стартерах и т.д. |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |