2011-04-04 29 views
11

Me gusta ejecutar dos programas usando archivos por lotes, pero la condición es que el segundo programa debe iniciarse solo después de que se cargó el primer programa, ¿hay alguna manera de controlar usar el temporizador para controlar cuándo? el programa comienza.Cómo ejecutar múltiples programas usando el archivo por lotes

+0

No puede hacer esto en un archivo por lotes como bloques de archivos por lotes hasta que finalice el comando actual. Te sugiero que escribas una aplicación de envoltura que inicie ambos programas. – Rasika

+0

Rasika: Eso está mal. – Joey

+0

@Joey: Es correcto, pero un poco corto :-) Puedes usar 'start' o pipes o si el programa es un exe de Windows simplemente funciona. – jeb

Respuesta

10

Básicamente, usted podría intentar este enfoque (no probado):

  1. Ejecutar el primer programa con el comando start.

  2. Compruebe la lista de tareas en un bucle para ver si el programa apareció allí.

  3. Imponen alguna limitación de tiempo para dicho bucle.

  4. Ejecute el siguiente programa en caso de éxito, salga con la notificación de lo contrario.

El script podría tener este aspecto:

@ECHO OFF 
START program1.exe 
FOR /L %%i IN (1,1,100) DO (
    (TASKLIST | FIND /I "program.exe") && GOTO :startnext 

    :: you might add here some delaying 
) 
ECHO Timeout waiting for program1.exe to start 
GOTO :EOF 

:startnext 
program2.exe 
:: or START program2.exe 

Tenga en cuenta que el tiempo no es precisa, especialmente si se va a insertar los retrasos entre las comprobaciones de la lista de tareas.

+1

Wow, gracias por la sugerencia .. stackoverflow es realmente bueno! – srisar

2

tengo también encontrará un pequeño truco para hacerlo, simplemente utilizando un comando ping con la opción -n de la siguiente manera:

start /d "C:\Program Files (x86)\Mobile Partner\" MobilePartner.exe 
ping 127.0.0.1 -n 8 
start /d "F:\Other Applcations\System Tools\OS Tweak\" dragfullwindows.exe 
5

Creo que esto podría ser irrelevante aquí, pero le gustaría compartir la siguiente:

He creado el siguiente archivo por lotes y lo ejecuto cada vez que abro mi computadora portátil en la oficina para abrir programas relevantes con un solo clic. Mantuve este archivo en el escritorio y creé una carpeta donde pongo todos los accesos directos para programas relevantes. Por lo tanto, ejecutar estos accesos directos en el archivo por lotes de la siguiente manera:

@ECHO off 

start C:\Users\User1\Desktop\Softwares\IE 
start C:\Users\User1\Desktop\Softwares\Googletalk 
start C:\Users\User1\Desktop\Softwares\YahooMessenger 
start C:\Users\User1\Desktop\Softwares\Program4 
start C:\Users\User1\Desktop\Softwares\Program5 
10

que necesita la misma cosa, y descubrió que lo siguiente funciona como se esperaba:

start D:\Michal\Xming\Xming.exe -multiwindow 
start D:\Michal\Xming\putty.exe 
start D:\Michal\WinSCP\WinSCP.exe 

Y todo se guarda en archivo Login.bat.

BTW, estoy ejecutando Win7 pero dudo que esto tenga algún impacto.

Cuestiones relacionadas