反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby 会将空格解释为分隔命令行参数,因此您需要引用整个内容:
`"C:\\Documents and Settings\\test.exe"`
另一种选择是使用system
并强制使用第二个参数。如果system
获取多个参数,它将第一个参数视为要执行的命令的路径,您不需要引用命令:
system('C:\Documents and Settings\test.exe','')
注意单引号的使用,所以我们没有转义反斜杠。
当然,这不会让你得到标准输出/错误,所以如果你在 Ruby 1.9.2 上,你可以使用非常方便的Open3
库,它的工作方式类似于system
,但会给你更多关于你刚刚运行的过程的信息:
require 'open3'
stdout,stderr,status = Open3.capture3('C:\Documents and Settings\test.exe','')
puts stdout # => string containing standard output of your command
puts stderr # => string containing standard ERROR of your command
if status.success?
puts "It worked!"
else
puts "OH NOES! Got exit code #{status.exitstatus}"
end