¿Alguien sabe si hay un script cmd que lo haga y / o una herramienta de línea de comando lista para el trabajo?
12
¿Alguien sabe si hay un script cmd que lo haga y / o una herramienta de línea de comando lista para el trabajo?
Respuestas:
Cree los tres archivos por lotes a continuación. Main.bat lanza 1.bat y 2.bat
1.bat y 2.bat escriben archivos temporales para los cuales main.bat comprueba. Mientras 1.bat y 2.bat están funcionando, main.bat informa que el procesamiento todavía está ocurriendo. Cuando presionas enter en la ventana abierta de 1.bat o 2.bat, el archivo temporal se elimina y el programa se cierra. Esto simula el proceso de detención para ese archivo .bat. Si hace esto para 1 y 2.bat, main.bat le informa que el procesamiento se ha completado para estos procesos. Puede hacer que 1.bat y 2.bat hagan lo que quiera, siempre que borre el archivo temporal cuando haya terminado. En este punto, main.bat puede hacer lo que usted quiera que haga también.
1.bat
2.bat
main.bat
fuente
Suficientemente simple, siempre que los procesos no necesiten entrada o salida estándar. Desde la línea de comando o en un archivo por lotes:
Esto ejecutará los cuatro procesos simultáneamente, y no volverá hasta que todos hayan salido. (Posible excepción: si un proceso cierra explícitamente la salida estándar, podría tratarse como si hubiera salido. Pero eso es inusual, muy pocos procesos lo hacen).
No estoy seguro de cuántos procesos puede iniciar simultáneamente de esta manera. He probado hasta diez.
fuente
La única forma de hacer esto es iniciar archivos por lotes separados (ver
start /?
) que ejecutan la tarea individual y escribir un archivo de texto al finalizar. Luego, verifica periódicamente si se han creado los archivos de texto.fuente
Puede consultar el cmdlet Powershell Start-Job. Debería permitirte hacer esto. Más aquí Powershell es el shell de elección de Microsoft. Es mucho más potente que los scripts de cmd y vale la pena invertir su tiempo.
fuente
O puede usar esto: http://www.out-web.net/?p=167
Lo hice, funciona, sin embargo, a veces sucede que el PID del proceso terminado es reutilizado inmediatamente por otro proceso de Windows que acaba de comenzar, y hace que la detección del final de su proceso sea peligrosa / errónea.
fuente
También estaba buscando una tarea similar. El objetivo era ejecutar múltiples comandos en paralelo y extraer la salida (stdout y error) de todos los procesos paralelos. Luego espere a que finalicen todos los procesos paralelos y ejecute otro comando. El siguiente es un código de muestra para el archivo BAT, se puede ejecutar en CMD:
( start "" /B cmd /c ping localhost -n 6 ^>nul timeout /t 5 /nobreak start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1 start "" /B cmd /c ping localhost -n 11 ^>nul timeout /t 10 /nobreak ) | pause Echo waited timeout /t 12 /nobreak
Todas las declaraciones dentro
()
se ejecutan primero, espere a que se completen, luego se ejecutan las últimas dos líneas. Todos los comandos que comienzanstart
se ejecutan simultáneamente.Estos enlaces son útiles: https://stackoverflow.com/a/43762349/9689416 y https://ss64.com/nt/start.html
fuente