需要帮助vbscript“oShell.run”命令

时间:2011-08-04 18:09:12

标签: vbscript

当我执行以下代码时,它可以工作,但我需要等待代码完成;在我可以执行我的程序的其余部分之前。我该怎么做?

工作,但不等待:

Set oShell = CreateObject("Wscript.Shell")
oShell.Run "sftp2.exe -B " & strOutputFile   

不起作用:

Set oShell = CreateObject("Wscript.Shell")
Return =  oShell.Run ("sftp2.exe -B " & strOutputFile, 1, true)  

工作,但不等待:

Set oShell = CreateObject("Wscript.Shell")
Set oExec = oShell.Exec ("sftp2.exe -B " & strOutputFile)       

2 个答案:

答案 0 :(得分:1)

在第三个示例中,您可以轮询WshScriptExec对象的状态,直到该过程完成:

Set oShell = CreateObject("Wscript.Shell")
Set oExec = oShell.Exec ("sftp2.exe -B " & strOutputFile)

Do While oExec.Status = 0
     WScript.Sleep 100
Loop

' as you were...

虽然你的例子看起来很像是msdn,所以我不确定他们为什么不工作。也许这是您的程序sftp2.exe运行导致问题的方式?如果它与通常的ftp应用程序类似,它将作为一种可能不兼容的命令提示符运行。我只是猜测。

答案 1 :(得分:1)

再次感谢您的帮助。我弄清楚为什么它不能正常工作。绝对路径与相对路径。我使用相对路径,这导致下面的代码失败,因为它不确定是否找到文件sftp。在上面的其他两个例子中,没有必要对我的绝对路径有所帮助。

这适用于绝对路径(即在"C:\somefolder\file";文件中放置"strOutputFile"命令。

Set oShell = CreateObject("Wscript.Shell")

Return =  oShell.Run ("sftp2.exe -B " & strOutputFile, 1, true)