Estoy tratando de crear un script para ejecutar un exe en el apagado para instalar sp1. mi guión es algo así como (no el guión de murciélago real)
If installed GOTO END
Install.exe
END:
Mi problema es que cuando se ejecuta, inicia el instalador, luego finaliza el script porque el instalador es un proceso diferente y sigue cerrando el proceso de instalación porque la computadora está apagando y apagando el sistema (al menos, eso es lo que creo está haciendo)
¿Hay alguna manera de decirle que espere hasta que el proceso que inició se complete y luego se apague?
windows
batch-file
executable
Kravlin
fuente
fuente
like start /wait install; exit
?cmd /C start /wait install
Una forma más corta:
también
podría usarse, aunque con más tiempo eventualmente podrás capturar algo de salida de la consola. Y esta es la razón por la que funciona: el comando canalizado espera la entrada hasta que finalice el .exe
fuente
<
,>
,>>
,&
,&&
,||
,|
)Llamar al exe directamente desde el archivo por lotes o usarlo
start /wait
funcionará, pero hay una advertencia.Si el exe al que llama crea otro proceso, como llamar a otro exe, y luego sale, el archivo por lotes continuará procesándose después de que el exe llamado haya terminado, ya que no tiene conocimiento de otros procesos iniciados por él.
En su caso, este es un problema real porque los instaladores normalmente extraen archivos de alguna forma de contenedor comprimido, que puede estar incrustado en el propio exe, luego disparan uno de los archivos extraídos y salen. Algunos instaladores proporcionan parámetros de línea de comandos que le dicen al exe original que no salga hasta que se complete toda la instalación, por lo que es algo que quizás desee investigar. Aparte de eso, no hay una forma real de evitar esto con archivos por lotes solos y tomaría una solución programática para resolver.
fuente
msiexec
menudo también dispara otros procesos. :(start /wait
? Yo mismo creía que era necesario usarlostart /wait
para bloquear el archivo por lotes hasta que finalice la aplicación GUI (como opuesta a una consola). Pero al probarlo ahora, veo que los archivos por lotes realmente esperan incluso las aplicaciones GUI. He publicado la pregunta correspondiente: ¿Por qué la aplicación GUI bloquea un archivo por lotes?Aquí hay un ejemplo usando MATLAB! He asumido que la configuración de ruta para MATLAB está hecha y que el archivo FileName.m asegura la salida de MATLAB (o el usuario lo ha especificado internamente).
fuente
Tuve el problema que @John Gardeniers tenía o describió, donde mi exe llamó a otro exe y terminó, por lo tanto, start / wait no funcionó. Creé un "ciclo while" para verificar si se está ejecutando y luego seguir adelante una vez hecho. Los tiempos se pueden ajustar para satisfacer sus necesidades.
fuente
Puede usar el comando de inicio / espera. Esto inicia una aplicación y espera a que termine.
O si sabe cuánto tiempo lleva ejecutar, puede echar un vistazo al comando de suspensión, proporcionado por las herramientas del Kit de recursos de Windows Server 2003 . Sleep.exe se puede usar para pausar su lote por cualquier número de segundos para permitir que el programa se instale completamente antes de que el archivo por lotes continúe instalando cualquier otra cosa. Hay algunos programas que ignoran la sintaxis de "inicio / espera", debido a que el programa mismo está iniciando otro proceso, entonces el sleep.exe es muy útil.
fuente