2017-05-29 21 views
-2

我需要在VBScipt中運行ruby腳本。我有一個代碼:在VBScript中將Ruby腳本輸出爲變量

Set newobj = CreateObject("WScript.shell") 
vbsInterpreter = "cscript.exe" 
nRet = newobj.Run("%comspec% /c c:\\Program Files (x86)\\Puppet Labs\\Puppet\\sys\\ruby\\bin\\ruby.exe c:\\scr.rb") 

的Ruby腳本輸出爲puts "Directory is empty",現在我想「目錄爲空」說的NRET是字符串。運行VBScript中,我得到

C:> CSCRIPT test.vbs微軟(R)Windows腳本宿主5.6版 版權所有(C)微軟公司1996-2001。版權所有。

爲什麼0?如何讓ruby腳本輸出VBScript輸出?

回答

0

你的問題(特別是子問題「爲什麼0」)表明你的代碼(複製而不理解)建議(如閱讀文檔或考慮變量(名稱))。 evidence 因此,這裏是代碼:

type ..\rb\44245994.rb 
puts "Why didn't you study the docs for .RUN (and .Exec)?" 
5.times do 
    puts "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" 
end 
ARGV.each {|a| p a} 
puts "Done." 
exit 14 

44245994.vbs:

Option Explicit 

Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject") 
Dim sRuby : sRuby = "C:\Program Files\Ruby-2.1\bin\ruby.exe" 
Dim oSH : Set oSH = CreateObject("WScript.Shell") 
Dim sCmd : sCmd  = Join(Array(_ 
    qq(sRuby) _ 
    , qq(goFS.GetAbsolutePathName("..\rb\44245994.rb")) _ 
    , "pi" _ 
    , qq("1, 2, 3") _ 
)) 
WScript.Echo "sCmd:", sCmd 
WScript.Echo "Stdout of execee:" , oSH.Exec(sCmd).StdOut.ReadAll() 
WScript.Echo "exit code of runee:", oSH.Run(sCmd, 0, True) 

Function qq(s) 
    qq = """" & s & """" 
End Function 

輸出:

cscript 44245994.vbs 
sCmd: "C:\Program Files\Ruby-2.1\bin\ruby.exe" "E:\work\proj\soa\44245994\rb\44245994.rb" pi "1, 2, 3" 
Stdout of execee: Why didn't you study the docs for .RUN (and .Exec)? 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
"pi" 
"1, 2, 3" 
Done. 

exit code of runee: 14 
+0

謝謝,但我使用的代碼只有這部分;) '顯式的選項 Dim goFS:Set goFS = CreateObject(「Scripting.FileSystemObject」) 暗淡sRuby:sRuby = 「C:\ Program Files文件(x86)的\木偶實驗室\木偶\ SYS \紅寶石\ BIN \ ruby​​.exe」 暗淡奧什:設置奧什=的CreateObject( 「WScript.Shell」) (x86)\ Puppet Labs \ Puppet \ sys \ ruby​​ \ bin \ ruby​​.exe「」「」c:\ src.rb「」「)。StdOut.ReadAll( )' – mila002

相關問題