Как сэкономить время при использовании plink в VBA

Мои коды VBA ниже показывают шаблон о том, как управлять моим хостом через plink

Set wsh = VBA.CreateObject("WScript.Shell")  
for i = 1 to 1000
   wsh.Run("cmd.exe /c plink -ssh 192.168.100.xx -l root -pw xxxx command", 0, True)
   Sleep 1000
next i

Если мне нужно получать информацию от хоста через plink.exe каждую секунду, необходимо выполнить команду "wsh.Run("cmd.exe /c plink -ssh 192.168.100.xx -l root -pw xxxx command", 0, True)» каждый раз, что тратит время на открытие оболочки и выполнение plink.exe, а затем закрытие всего этого каждый раунд. Есть ли способ сэкономить время, что означает, что нужно открыть оболочку и выполнить plink.exe один раз и оставить plink.exe прослушивать мою команду, пока цикл не закончится?


person StevenYen    schedule 04.08.2016    source источник
comment
Этот вопрос/ответ (перенаправление ввода в исполняемый файл из Excel VBA) может дать вам то, что вам нужно; он показывает, как взаимодействовать с исполняемым файлом через WScript.Shell.   -  person Jean-François Corbett    schedule 04.08.2016
comment
... но, если подумать, мне непонятно, чего вы пытаетесь достичь. Можете ли вы показать пример того, как вы будете делать то, что хотите, вручную в командной строке? Как только это прояснится, будет легче понять, как это автоматизировать.   -  person Jean-François Corbett    schedule 04.08.2016
comment
Я пересмотрел свой вопрос.   -  person StevenYen    schedule 08.08.2016


Ответы (1)


Вы можете взглянуть на решение Chip Pearsons, Shell and Wait.

http://www.cpearson.com/excel/ShellAndWait.aspx

Функция ShellAndWait вызывает Shell, а затем ожидает завершения процесса Shell. Вы можете указать интервал, по истечении которого функция истечет и вернется к вызывающей стороне. Объявление ShellAndWait выглядит следующим образом:

person DaveMac    schedule 04.08.2016