¡El programa por lotes no funciona como debería!

¡El programa por lotes no funciona como debería!

Creé un script por lotes (ver completo aquí) para iniciar algunos servicios primero y luego una aplicación. Una vez completada la aplicación, se supone que el lote debe hacerlo, GOTO somewherepero está esperando que el programa salga para continuar.

Encabezado para iniciar la aplicación y proceder:

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    IF NOT %BACK%==NULL GOTO %BACK%
    GOTO STARTAPPCONT

Este encabezado se llama desde otro encabezado:

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH%contiene el nombre del siguiente encabezado; en el caso anterior, vmSTARTAPP.

Si lo ejecuto desde una nueva ventana del símbolo del sistema, funciona bien, pero no en este lote.

¿Qué estoy haciendo mal?

PD: No remitas esta pregunta a mi pregunta anterior. Este es un caso completamente diferente.

Respuesta1

¿Podrías intentar reemplazar las líneas que muestran?

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

con

:vmSTARTAPP
    start "Starting VMWare" /B "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

Supongo que desea iniciar VMWare silenciosamente y continuar sin detenerse y esto, en teoría, debería hacerlo.

El startcomando le indica a DOS que ejecute el comando que le está pasando (en este caso, "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe") y, de forma predeterminada, no espera el comando que usted le pasa. para regresar y en su lugar lo ejecuta en un proceso separado.

De forma predeterminada, cada línea que tiene en un archivo por lotes se ejecuta secuencialmente y espera a que cada línea se ejecute y regrese antes de pasar a la siguiente línea. El startcomando soluciona esto iniciando el programa, lo pasa en un proceso separado (ventana de DOS) y su archivo por lotes encuentra esta línea, la ejecuta como lo haría normalmente, ve que el startcomando ha regresado (después de crear un nuevo proceso para ejecutar). su comando) y su archivo por lotes continúa como si nada inesperado hubiera sucedido.

El "Starting VMWare"título es simplemente eso, un título, la ventana de DOS recién creada tendría ese título si no fuera por el /Bargumento que le dice que no muestre la nueva ventana de DOS. El título es algo necesario pero algo opcional y he tenido un momento WTF ocasional en guiones sin él, pero esos momentos son más la excepción que la regla.

Puede encontrar un poco más de información sobre el comando Inicio enhttp://ss64.com/nt/start.html

información relacionada