1

Тема: VBS: Метод .Run >> Перевести поток.

Использую метод .Run, запускаемая программа возвращает код завершения в переменную RetCode и после этого я его считываю и произвожу далее обработку:


RetCode = WshShell.Run("C:\Program.exe  C:\1.rtf", 0, True) 

Но запускаемая программа при запуске в консольном режиме отображает текст в "черном окошке" возник вопрос как этот текст можно вывести в файл?

Если произвожу запуск через cmd.exe могу перевести поток выполнения в файл следующим образом:


C:\Program.exe  C:\1.rtf >>Text.txt

Содержимое черного окошка в момент работы программы выводится в файл Text.txt.

2 (изменено: wildwolf007, 2014-03-24 15:28:15)

Re: VBS: Метод .Run >> Перевести поток.

Спасибо нашел решение в сети. Тема закрыта.


Wscript.Shell.Run("C:\Windows\System32\cmd.exe /c C:\Program.exe пераметр1 пераметр2 пераметр3 > Text.txt",1,True)

Можно в скрипте получить stdout программы как поток:


Set ProgStdOut = Wscript.Shell.Exec("C:\Program.exe пераметр1 пераметр2 пераметр3").StdOut

Можно читать его построчно:



while not ProgStdOut.AtEndOfStream
  s = ProgStdOut.ReadLine
  MsgBox s
wend

Можно сразу считать весь поток:


s = Wscript.Shell.Exec("C:\Program.exe пераметр1 пераметр2 пераметр3").StdOut.ReadAll
MsgBox s

3

Re: VBS: Метод .Run >> Перевести поток.

Замечу, что, запуская через .Run, можно настроить отработку в минимизированном окошке, а, вот, с .Exec прийдётся любоваться мелькающими "чёрными" окнами, хотя конечно же считывание потоков - вещь удобная.

WBR. Roman

4

Re: VBS: Метод .Run >> Перевести поток.

Через Run можно настроить что б вообще окно не отображалось параметр 0 проставляется.
А если нужно использовать метод с .Exec, то можно запустить в скрытом режиме через метод Run, а потом запустить через с .Exec и никакие окошки мешать не будут. ! Тобишь .Exec через RUN.