Título: ejecutar sincronamente un archivo bat Publicado por: CeLaYa en 28 Septiembre 2006, 18:30 pm Hola, estyo haciendo un programa en el que utilizo algunos archivos .bat, los mando llamar con la instruccion Shell, pero los ajecuta asincronamente
Shell App.Path & "\respaldo.bat", vbNormalFocus hay alguna manera de hacer que mi programa espere hasta que el archivo bat termine su ejecución?? Título: Re: ejecutar sincronamente un archivo bat Publicado por: Snort en 28 Septiembre 2006, 20:45 pm Seguramente no, lo veo difil vamos alomejor con alguna api de estas raras... no creo, pero si el archivo .bat no interacciona con el usuario siempre puedes ponerle un timer antes de abrir el siguiente .bat
Título: Re: ejecutar sincronamente un archivo bat Publicado por: BenRu en 28 Septiembre 2006, 20:57 pm Una forma sencilla es poner un timer o sleep.
Tambien puedes hacer que cuando termine el batch, este cambie la barra de titulo...y vb al detectar que la barra de titulo de la ventana es "Batch terminado", pues pasa a la siguiente accion ;) Título: Re: ejecutar sincronamente un archivo bat Publicado por: Mad Antrax en 28 Septiembre 2006, 23:40 pm La pregunta es... ¿no puedes poner las instrucciones que hace el bat dentro del propio programa?
Cuentanos un poco más tu caso a ver si encontramos otra alternativa ;) Título: Re: ejecutar sincronamente un archivo bat Publicado por: CeLaYa en 28 Septiembre 2006, 23:50 pm la verdad es que el bat lo que hace es comrimir un archivo, no se como hacerlo desde VB por eso opte por hacer un bat que se encargara de eso
El archivo bat contiene lo siguiente: @Echo off c:\archiv~1\winzip\winzip32.exe -a -r C:\DOCUME~1\ocelaya\MISDOC~1\INDICA~1\Respaldo28092006.zip C:\DOCUME~1\ocelaya\MISDOC~1\INDICA~1\Respaldo28092006.bak se que se puede hacer en VB pero no se como Título: Re: ejecutar sincronamente un archivo bat Publicado por: BenRu en 29 Septiembre 2006, 00:05 am Se hace con Shell()
Shell("C:\calc.exe") Pd: No hace falta que utilices @echo off, ni exit. Título: Re: ejecutar sincronamente un archivo bat Publicado por: CeLaYa en 30 Septiembre 2006, 16:04 pm :huh: el problema de la instrucción shell es que ejecuta el archivo en forma asincrona y lo que necesito es esperar a que termine de comprimir el archivo para poder continuar
Título: Re: ejecutar sincronamente un archivo bat Publicado por: CeLaYa en 3 Octubre 2006, 21:25 pm me comentaron que hay una dll, que hace eso, alguien sabe cual es?
Título: Re: ejecutar sincronamente un archivo bat Publicado por: <--v1c1ous--> en 3 Octubre 2006, 21:44 pm Claro que existe.
Acordate que cualquier *.bat ejecuta desde una consola de DOS :). Por Ejemplo en WinXP el batch ejecuta junto el el cmd. Uso Pausa porque el sleep es horrendo, con pausa puedo seguir tranquilamente con otras funciones sin problemas, hace una pausa a la siguiente linea pero solo dentro de la funcion. Citar 'PROCESOS Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long 'PAUSA Private Declare Function GetTickCount Lib "Kernel32.dll" () As Long Const STILL_ACTIVE = &H103 Const PROCESS_QUERY_INFORMATION = &H400 'FUNCION DE SLEEP PARA ESPERAR UNOS MILISEGUNDOS Sub Pausa(HowLong As Long) Dim u%, tick As Long tick = GetTickCount() Do u% = DoEvents Loop Until tick + HowLong < GetTickCount End Sub Y aca la funcion en concreto: Citar Function ExeEspera(COMANDO as String) Dim hProcess As Long Dim RetVal As Long hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(COMANDO, vbMinimizedNoFocus)) Do GetExitCodeProcess hProcess, RetVal DoEvents Pausa 100 Loop While RetVal = STILL_ACTIVE End Function Título: Re: ejecutar sincronamente un archivo bat Publicado por: CeLaYa en 3 Octubre 2006, 21:58 pm ya lo probe y funciono muy bien, GRACIAS!!!!!
Título: Re: ejecutar sincronamente un archivo bat Publicado por: Meg en 3 Octubre 2006, 22:03 pm Mira aqui te dejo un code para comprimir un archivo desde vb (Muy util para hacer worms xDD )
Código: Dim Rutaexe As String |