Estoy escribiendo un archivo por lotes, en el que llamo a EXE para ejecutar. Ahora, las instrucciones después de la llamada al EXE no deberían ejecutarse hasta que el EXE complete su ejecución. ¿Cómo puedo hacerlo en el archivo por lotes (en Windows)?¿Cómo puedo hacer que un archivo por lotes de windows se pause mientras se ejecuta un ejecutable?
Respuesta
Puede utilizar
PAUSE
En secuencias de comandos por lotes, pero yo no entiendo su pregunta.
'Pausa' para que el usuario presione una tecla. Eso no funcionará para un script automatizado ya que el usuario no está allí. James quiere un script automatizado para ejecutar un programa, esperar que termine y salir, luego ejecutar un segundo programa. –
Las declaraciones en un archivo por lotes se ejecutan secuencialmente. Por lo tanto, si su archivo por lotes se ve así:
first.exe
next.exe
Next se ejecuta si primero se completa.
Pruébalo con explorer.exe y verás que vuelve después de que el programa se haya iniciado, no terminado. – paxdiablo
@Pax: depende del alcance de la pregunta. En general, en un archivo de proceso por lotes, generalmente solo pone herramientas de línea de comandos, no herramientas de GUI. – PhiLho
Normalmente, pero no siempre: tengo un archivo por lotes de inicio en mi cuadro virtual de trabajo desde casa que inicia el cliente VPN gráfico (luego correo, herramienta de error, etc.). Afortunadamente tiene un interruptor de línea de comando que hace que no regrese hasta que haya terminado ya que no pude arrancar/esperar para hacerlo.Pero tu punto es tomado. – paxdiablo
Depende de cómo funciona el .exe. Me temo que no tengo todos los detalles técnicos o la terminología, pero algunos archivos .exe devolverán el control de la sesión inmediatamente después de que hayan comenzado, mientras que otros no devolverán el control hasta después de que el programa haya finalizado.
El segundo caso es fácil, ya que los comandos que se ejecutan tarde en el archivo no se ejecutarán hasta que se completen los primeros, así que supongo que se enfrenta al caso n. ° 1.
Una solución alternativa/hack si la ejecución lleva (aproximadamente) la misma cantidad de tiempo cada vez que se ejecuta es utilizar un comando ping con un retraso.
PING 127.0.0.1 -n 1 -w 120000 >NUL
Esto obligará al comando de ping a ejecutarse una vez con un retardo de 120000 ms (2 min).
También hay un buen artículo sobre un método más complejo (pero más confiable) en fpschultze.de con una explicación mucho más detallada. En resumen, consulta la lista de tareas buscando el ejecutable que está esperando. Tan pronto como no esté allí, continuará con el archivo por lotes. También usa el método ping, pero de una manera diferente.
La forma correcta es en realidad: PING 127.1 -n 10 -w 1000> NUL – djangofan
@djangofan: funcionó a la perfección con su corrección. – SFun28
Lo sentimos, pero la solución alternativa de ping propuesta es simplemente terrible. Es propenso a errores y difícil de entender. Hay maneras muy superiores de hacer una pausa por algún tiempo (por ejemplo, tiempo de espera). – mafu
Puede usar el comando "start" con el parámetro/wait use start /? en línea de comandos para más detalles.
Por más que lo intente, no pude obtener "start/wait explorer.exe" para realmente esperar ... – paxdiablo
START /WAIT First.exe
START /WAIT Second.exe
Aquí está el proceso muy simple. Hemos de tener la siguiente línea que esperar 10 segundos y luego continuar con el resto de comandos ...
TIMEOUT /T 10
Eso es todo lo que tiene que hacer. Espero que disfrutes mi técnica.
- 1. ¿Cómo ocultar la ventana de cmd mientras se ejecuta un archivo por lotes?
- 2. ¿Cómo puedo comprobar el tamaño de un archivo en un archivo por lotes de Windows?
- 3. ¿Cómo puedo hacer un aviso "¿estás seguro?" En un archivo por lotes de Windows?
- 4. Reemplazo de un ejecutable que se ejecuta en Linux
- 5. ¿Cómo puedo hacer que un archivo por lotes actúe como un simple grep usando Perl?
- 6. Detectando cómo se ejecutó un archivo por lotes
- 7. ¿Cómo detectar que Java se instala a través de REGEDIT.exe desde un archivo por lotes?
- 8. ¿Es seguro recompilar un ejecutable mientras se está ejecutando?
- 9. ¿Cómo iniciar un archivo python mientras se inicia Windows?
- 10. ¿Cómo puedo hacer un ejecutable portátil?
- 11. Directorio de inicio del archivo de proceso por lotes de Windows cuando se ejecuta como administrador
- 12. ¿Cómo se realiza un bucle en un archivo por lotes de Windows?
- 13. Hacer que el archivo por lotes de windows no se cierre al salir del programa
- 14. ¿Cómo se evita que un archivo Windows Batch salga temprano?
- 15. ¿Cómo concatenar cadenas en un archivo por lotes de Windows?
- 16. Python: ¿cómo se ejecuta un archivo .py?
- 17. ¿Cómo comprobar si existe un archivo ejecutable en% PATH% desde un archivo de proceso por lotes de Windows?
- 18. ¿Es posible llamar a un archivo por lotes mientras se compila un script Inno Setup?
- 19. Cambiar un archivo por lotes cuando se está ejecutando
- 20. Incluir un archivo por lotes en un archivo por lotes
- 21. Cómo hacer que el ejecutable de shell se ejecute en segundo plano mientras php continúa
- 22. Dentro de un archivo por lotes, ¿cómo puedo saber si se está ejecutando un proceso?
- 23. Servicio de Windows que se ejecuta periódicamente
- 24. Cómo evitar que el archivo de proceso por lotes (.bat) se cierre al ejecutar comandos?
- 25. Ejecutar archivo por lotes tras otro archivo por lotes se completa
- 26. archivo por lotes de Windows operador &&
- 27. Control de psftp en un archivo por lotes de Windows
- 28. Redirigir argumentos pasados a un archivo por lotes de Windows
- 29. ¿Cómo puedo crear JAR ejecutable con SWT que se ejecuta en todas las plataformas?
- 30. ¿Cómo enviar un correo electrónico simple desde un archivo por lotes de Windows?
Creo que esto depende un poco de las aplicaciones que está ejecutando. Si la aplicación es un lanzador que lanza otros servicios o una GUI, entonces creo que hay poco que puede hacer sin escribir una aplicación para monitorear procesos y/o ventanas. –