wshshell wscript vbs run commands comandos codes shell vbscript wsh

vbs - wscript.shell vba



WScript.Shell y ejecuciĆ³n de bloqueo? (2)

Estoy usando WScript para automatizar algunas tareas, usando WScript.Shell para llamar a programas externos.

Sin embargo, en este momento no espera a que termine el programa externo, sino que continúa. Esto causa problemas porque tengo algunas tareas que dependen de que otras terminen primero.

Estoy usando código como:

ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir Set wshShell = WScript.CreateObject("Wscript.Shell") wshShell.run ZipCommand

¿Hay alguna manera de hacer esto para que se bloquee hasta que vuelva el programa ejecutado?


Resulta que, mientras que el bucle es severo CPU hog: P

Encontré una mejor manera:

ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir Set wshShell = WScript.CreateObject("Wscript.Shell") wshShell.Run ZipCommand,1,1

Los dos últimos argumentos son Show window y Block Execution :)


Si utiliza el método "Exec", devuelve una referencia, por lo que puede sondear la propiedad "Estado" para determinar cuándo se completa. Aquí hay una muestra de msdn :

Dim WshShell, oExec Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec(ZipCommand) Do While oExec.Status = 0 WScript.Sleep 100 Loop