Comando RUN

956 views
Skip to first unread message

Martin Peveri

unread,
Sep 5, 2013, 2:27:16 PM9/5/13
to publice...@googlegroups.com
Hola amigos tengo un problema con el comando RUN. Con ese comando ejecuto el 7zip para luego comprimir unos dbf, pero este comando no espera a que termine de ejecutar el 7zip y no si son tablas pesadas no me las comprime.

Hay alguna forma de ejecutar un exe y esperar a que termine el proceso?.

Muchas Gracias

Fernando D. Bozzo

unread,
Sep 5, 2013, 2:42:26 PM9/5/13
to publice...@googlegroups.com
Sí, utilizando el objeto shell del sistema operativo (Windows Scripting Host o WSH), con el parámetro que le indica "esperar a que termine el proceso" antes de volver.

Algo así:

WshShell = CreateObject("Wscript.shell")
WshShell.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

En tu caso bWaitOnReturn sería .T.


Aquí se explican los parámetros:
http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx


Saludos.-

Martin Peveri

unread,
Sep 5, 2013, 3:03:52 PM9/5/13
to publice...@googlegroups.com
Fernando muchas gracias por responder.

Tengo este comando

RUN /N "&lczip" a "C:\&pcDistrib._CW_&vmes.&vanio..zip" "INFO\*.DBF"

Como la trascribo?.

Estuve probando algo, pero me da error:

oWshShell=CreateObject("Wscript.Shell")
lcCommand = "'&lczip' a 'C:\&pcDistrib._CW_&vmes.&vanio..zip' 'INFO\*.DBF'
oWshShell.Run(lcCommand,1,.T.) 

Muchas Gracias

Fernando D. Bozzo

unread,
Sep 5, 2013, 3:55:40 PM9/5/13
to publice...@googlegroups.com
Hola Martín:

Estás usando tanta macrosustitución que te estás enredando.

¿No sería más facil concatenar las variables?

lcCommand = "'" + lczip + " a " + "C:\" + pcDistrib + "_CW_" + vmes + vanio + ".zip' 'INFO\*.DBF'"

Antes de ejecutarlo mirá si el contenido de lcCommand queda bien.

Ingesoft

unread,
Sep 5, 2013, 11:33:48 PM9/5/13
to publice...@googlegroups.com
Disculpa Siguiendo con el tema si creo un archivo scrip como deberia hacerlo , cual es el comando en scrip q me permite poner un boton de siguiente o cancelar para seguir ejecutandose el scrip 


Fer

unread,
Sep 6, 2013, 3:19:52 AM9/6/13
to publice...@googlegroups.com

No entiendo la pregunta. Si ponés esto en el evento click de un botón, ya está. ¿para que lo del botón siguiente?

Martin Peveri

unread,
Sep 6, 2013, 7:59:40 AM9/6/13
to publice...@googlegroups.com
Hola Fernando. De la forma esa no me sirve por que me da un error de que no encuentra el archivo especificado y me fijo los parámetros y están correctos.

Ahora si ejecuto esto:

lcCommand=GETENV("ComSpec") + [ /C 7zG.exe a -mx9 "] +  lcRuta "\TESTZIP.zip " + [" "] + " INFO\*.DBF" + ["]

se abre la ventana del 7zip, pero no me crea el archivo. 

A que se puede deber?.

Muchas Gracias

Fernando D. Bozzo

unread,
Sep 6, 2013, 8:38:34 AM9/6/13
to publice...@googlegroups.com
Hola Martin:

Yo intenté ejecutar lo que estás usando desde la ventana de comandos (cambiando de archivo), y no me funciona, pero hice esta prueba desde la ventana de comandos del DOS cambiando algunos parámetros de lugar, como dice la ayuda del 7zip, y si me funciona:

"C:\Archivos de programa\7-Zip\7zg.exe" a "c:\errores.zip" "c:\*.txt" -mx9

Ahora, hice lo mismo desde Fox usando lo que ya te había comentado y también me funciona:

WshShell = CreateObject("Wscript.shell")
lcCommand = ["C:\Archivos de programa\7-Zip\7zg.exe" a "c:\errores.zip" "c:\*.txt" -mx9]
WshShell.Run( lcCommand, 1, .T. )

Si reemplazás los nombres de archivo por tus variables y verificás que lcCommand siga quedando con la sintaxis que te puse, tiene que funcionar.
Además tenés que poner el directorio de tu 7zip, pero principalmente tu primera prueba tiene que ser desde el DOS, no desde Fox, para comprobar que funciona.

Saludos.-

Martin Peveri

unread,
Sep 6, 2013, 8:48:07 AM9/6/13
to publice...@googlegroups.com
Que groso que sos!!.

Me sacaste de un aprieto!.

Muchísimas gracias Fernando por tu tiempo.

Saludos
Reply all
Reply to author
Forward
0 new messages