нужна помощь с командой vbscript "oShell.run" - PullRequest
3 голосов
/ 04 августа 2011

Когда я выполняю следующий код, он работает, но мне нужно дождаться завершения кода; прежде чем я смогу выполнить остальную часть моей программы. Как мне это сделать?

Работает, но не ждет:

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 ]

1 голос
/ 06 августа 2011

Еще раз спасибо за помощь.Я понял, почему это не работает должным образом.Абсолютный путь против относительного пути.Я использовал относительный путь, и это приводило к сбою приведенного ниже кода, так как он не был уверен, что должен был найти файлы для sftp.Для моего suprize абсолютный путь не нужен в двух других приведенных выше примерах, которые сработали.

Это работает с абсолютным путем (т. Е. Положить "C:\somefolder\file"; команду в мой "strOutputFile" файл).

Set oShell = CreateObject("Wscript.Shell")

Return =  oShell.Run ("sftp2.exe -B " & strOutputFile, 1, true)  
1 голос
/ 04 августа 2011

В третьем примере вы можете опрашивать статус объекта 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, оно будет работать в виде командной строки, которая может быть несовместима. Я просто размышляю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...