42 votos

¿Cómo se puede esperar para un exe para completar el archivo de proceso por lotes?

Estoy tratando de crear una secuencia de comandos para ejecutar un archivo exe en el cierre con el fin de instalar el sp1. mi script es algo como (no reales bate de secuencia de comandos).

If installed GOTO END
    Install.exe
END:

Mi problema es que cuando se ejecuta, se inicia el instalador, luego termina la secuencia de comandos porque el instalador de un proceso diferente y sigue cerrando el proceso de instalación debido a que el equipo de apagar y apagar el sistema (al menos, eso es lo que creo que está haciendo.)

Hay alguna forma de decirle que espere hasta que el proceso se inició completa y, a continuación, cierre?

79voto

Bart De Vos Puntos 12724

Pruebe a ejecutar

START /WAIT Install.exe

12voto

John Gardeniers Puntos 22554

Ya sea llamando el exe directamente desde el archivo por lotes, o el uso de start /wait funciona, pero hay una advertencia.

Si el archivo exe de llamar, a continuación, crea otro proceso, tales como llamar a otro exe, y luego sale el archivo por lotes continuará el procesamiento después de la llamada exe se ha terminado, ya que no tiene conocimiento de otros procesos iniciados por él.

En el caso de que esto es un verdadero problema debido a que los instaladores normalmente extraer los archivos de alguna forma de comprimidos envase, que puede ser incrustado en el archivo exe, luego de fuego a la salida de uno de los archivos extraídos y salida. Algunos instaladores proporcionar parámetros de línea de comandos que dice el original exe no salir hasta que toda la instalación está completa, así que es algo que usted puede querer investigar. Aparte de eso, en realidad no hay forma de evitar esto con archivos por lotes sola y tomar una solución de programación para resolver.

4voto

Rachit Kumar Puntos 29

Aquí hay un ejemplo usando MATLAB! He asumido que la ruta de acceso de instalación de MATLAB se realiza y MATLAB salida está garantizada por el nombre del archivo.m archivo (o el usuario ha especificado internamente).

echo off
matlab -nosplash /r "FileName.m"
:loop
tasklist /fi "imagename eq MATLAB.exe" |find ":" > nul
if errorlevel 1 goto loop
exit

0voto

Guido van Brakel Puntos 886

Usted puede utilizar el inicio /comando wait. Esto inicia una aplicación y espera a que termine.

O si usted sabe cuánto tiempo se necesita para ejecutar, usted puede tener una mirada en el comando de suspensión, proporcionados por el Servidor de Windows 2003 Herramientas del Kit de Recursos . Sleep.exe puede ser utilizado para hacer una pausa en su lote para cualquier número de segundos para permitir que el programa se instale completamente antes de que el archivo de proceso por lotes procede a instalar nada más. Hay algunos programas que ignoran el "start /wait" de la sintaxis, debido a que el propio programa el lanzamiento de otro proceso, entonces el sleep.exe es muy útil.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: