2013-06-25 2 views
2

Я вызываю VBScripts из VBScript, и я хочу, чтобы их вывод в консоль появлялся в окне, из которого я их вызываю. Поэтому, когда у меня есть этот кодПоказать выходные данные из дочерних скриптов в окне родительской консоли

WScript.Stdout.WriteLine("Checking out unit tests") 

ObjWshShell.Run "%comspec% \c checkoutUnitTests.vbs", 0, True 

единственный выход я вижу

Checking out unit tests 

, когда я хочу, чтобы увидеть все выходные данные checkoutUnitTests.vbs сцепляются на этот выход в том же окне. Как мне это сделать?

ответ

4

Вы должны попытаться использовать .Exec и .Stdout.Readline(), как в этой голой кости демо-скрипт:

mother.vbs

Option Explicit 

Dim oWS : Set oWS = CreateObject("WScript.Shell") 
WScript.Echo "A", "mother starts child" 
Dim oEx : Set oEx = oWS.Exec("cscript child.vbs") 
Do Until oEx.Stdout.AtEndOfStream 
    WScript.Echo oEx.Stdout.ReadLine() 
Loop 
WScript.Echo "B", "mother done" 

child.vbs:

Option Explicit 

Dim n 
For n = 1 To 5 
    WScript.Echo n, "child" 
Next 

:

cscript mother.vbs 
A mother starts child 
1 child 
2 child 
3 child 
4 child 
5 child 
B mother done 

0 :

см Pythonic version

+0

не работает для меня, открывает новое окно и все выходные в этом новом окне. –

+0

@coding_idiot Вы запустили 'cscript mother.vbs' в консоли? –

+0

Я запустил 'cscript mother.vbs' в консоли, который, в свою очередь, запускает' cscript child.vbs', этот 'child.vbs' открывает новый cmd. Новое дело в том, что 'child.vbs' ожидает ввода пользователя. –