当我执行以下代码时,它可以工作,但我需要等待代码完成;在我可以执行我的程序的其余部分之前。我该怎么做?
工作,但不等待:
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)
答案 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)