如何在Ruby中执行Windows CLI命令?

我有一个文件位于目录“C:\ Documents and Settings \ test.exe”但是当我在单个qoutes(我无法在此显示)中编写命令`C:\Documents and Settings\test.exe框),用于执行Ruby中的命令,我无法这样做,我收到的错误是没有找到文件或目录。 我尝试用“//”和“\”替换“\”,但似乎没有任何效果。 我也使用过system,IO.popen和exec命令但是所有的努力都是徒劳的。 此外,exec命令使程序退出,我不想发生。

提前致谢。

 `"C:\Documents and Settings\test.exe"` 

要么

 `exec "C:\Documents and Settings\test.exe"` 

或者在qoutes中的任何东西

反引号环境类似于双引号,因此反斜杠用于转义。 此外,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