Tengo un servicio de Windows (el servidor de integración de Bamboo) que ejecuta un archivo por lotes como un subproceso (un trabajo de compilación) de ese script. Dentro de ese archivo por lotes, me gustaría poder iniciar un proceso (llamémoslo workerprocess.exe) y hacer que ese proceso se ejecute en segundo plano. Todo esto está bien, he usado:
start "title" /B workerprocess.exe
Eso está muy bien. El problema es que esto demora la finalización del trabajo de compilación. Por lo tanto, el script por lotes finaliza, pero debido al subproceso workerprocess.exe, el servicio (Bamboo) no sabe que ha finalizado: todavía espera (y muestra la salida de) workerprocess.exe.
He buscado en la documentación el comando de inicio y no puedo ver nada que haga lo que quiero. Vi esta pregunta pero tampoco sirvió de nada: el servicio aún termina esperando a que termine el proceso.
Así que supongo que en resumen: ¿cómo puedo ejecutar un nuevo proceso desde un script por lotes para que esté completamente separado y no retenga nada que esté esperando que se complete ese script por lotes?
fuente
Respuestas:
¿Has probado Hidden Start (HSTART) ? (Cuesta $ 20)
Lo uso personalmente para ejecutar un trabajo por lotes por hora con la ventana oculta. También mencionan que puede ejecutar comandos secuencialmente como un parámetro (o por defecto, supongo) que se ejecutan de forma asincrónica. No sé cómo esto afectará su contención en la CPU, la memoria o el disco ... pero el software también le da la opción de esperar un poco antes de realizar la acción.
fuente
Todos los scripts vinculados se pueden descargar y guardar con cualquier nombre que le resulte conveniente.
1) La solución IEXPRESS - como argumentos solo acepta el comando y sus argumentos.
Ejemplo de uso:
2) SCHTASKS : nuevamente acepta solo dos argumentos: el comando y los argumentos. También comprueba si se inició con permisos elevados y, si es posible, obtiene el PID del proceso con el comando WEVTUTIL.
Ejemplo de uso:
3) 'WScript.Shell' : el script es un contenedor completo de 'WScript.Shell' y todas las opciones posibles se pueden configurar a través de las opciones de la línea de comandos. Es un híbrido jscript / batch y se puede llamar como un murciélago.
Ejemplo de uso (para más información imprima la ayuda con '-h'):
4) 'Win32_ProcessStartup' : nuevamente el contenedor completo y todas las opciones son accesibles a través de los argumentos de la línea de comandos. Esta vez es WSF / lote híbrido con algunos códigos Jscript y VBScript, pero devuelve el PID del proceso iniciado. no ocultas, se pueden usar algunas opciones como las coordenadas X / Y.
Ejemplo de uso (para obtener más información, imprima la ayuda con '-h'). Esto requerirá la ruta completa al ejecutable / script si no está en
%path%
:5) El. Solución neta . Se utilizan la mayoría de las opciones de ProcessStartInfo (pero al final estaba demasiado cansado para incluir todo):
Ejemplo de uso (para más información imprima la ayuda con '-h'):
fuente