Ruby脚本作为变量在VBScript中的输出

Ruby脚本作为变量在VBScript中的输出,ruby,vbscript,Ruby,Vbscript,我需要在VBScipt中运行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脚本的输出是put“Directory is emp

我需要在VBScipt中运行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脚本的输出是
put“Directory is empty”
,现在我希望nRet是字符串“Directory is empty”。运行我得到的VBScript

C:>cscript test.vbs Microsoft(R)Windows脚本主机版本5.6 版权所有(C)微软公司1996-2001。版权所有

0

为什么是0?如何使ruby脚本输出为VBScript输出?

您的问题(尤其是子问题“为什么0”)表明您更喜欢代码(复制而不理解)而不是建议(如阅读文档或思考变量(名称))。 下面是代码:

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

谢谢,但我只使用这部分代码;)<代码>选项显式Dim goFS:Set goFS=CreateObject(“Scripting.FileSystemObject”)Dim sRuby:sRuby=“c:\Program Files(x86)\Puppet Labs\Puppet\sys\ruby\bin\ruby.exe”Dim oSH:Set oSH=CreateObject(“WScript.Shell”)oSH.Exec(“”c:\Program Files(x86)\Puppet Labs\Puppet\sys\ruby\bin\ruby.exe“”“”c:\src.rb“”).StdOut.ReadAll()