Назад | Перейти на главную страницу

дождитесь завершения вызова процесса WMIC create cmd.exe для запуска bat

Я запускаю bat-файл, расположенный на удаленном сервере. Команда: wmic / node: [имя сервера] вызов процесса create "cmd.exe / c [расположение файла bat]. Я бы хотел, чтобы команда дождалась завершения выполнения пакетного файла. Другими словами: команда является частью Jenkins (Hudson) и следующий шаг после запуска пакетной команды окна до завершения задач пакетного файла. Я хотел бы, чтобы следующий шаг был выполнен сразу после завершения выполнения пакетного файла. * Задача (содержимое) пакетного файла восстанавливается БД.

следующий прокомментировал Фрагмент кода может сделать эту работу. К сожалению, протестировать могу только на локальном узле.

@ECHO OFF
SETLOCAL EnableExtensions DisableDelayedExpansion

set "_toRun=cmd.exe /C pause"   change to meet your circumstances 
set "_where=."                  sorry testing merely local computer 

set "_toGet=ProcessId ReturnValue"
set "_ProcessId="
set "_ReturnValue="
    rem %%G loop to get raw return values from `create` like next two lines
    rem ProcessId = 6476;
    rem ReturnValue = 0;
for /F "tokens=*" %%G in ('
  wmic /node:"%_where%" process call create "%_toRun%" ^| findstr "%_toGet%"
') do (
        rem %%g loop to assign values to variables `_ProcessId` and `_ReturnValue`
    for /F "tokens=1,2 delims=;= " %%g in ("%%~G") do ( 
      set "_%%~g=%%~h"
    )
)
if NOT "%_ReturnValue%"=="0" (
  echo %_toRun% failed, Return Value %_ReturnValue%
  goto :notest 
)
echo process %_toRun% runs as %_ProcessId%

    rem build WQL query
set "_query=ProcessId = %_ProcessId% and CommandLine = '%_toRun:\=\\%'"

    rem loop while queried process runs 
:test
set "_CommandLine="
for /F %%G in ('
  wmic /node:"%_where%" process where "%_query%" get CommandLine /value ^| findstr "="
') do set "_%%~G"
if not defined _CommandLine goto :notest
set _Comman
>NUL timeout /T 5 /NOBREAK 
goto :test

:notest

Ресурсы (обязательное чтение, неполное):