我有一个位于目录"C:\Documents and Settings\test.exe“中的文件,但是当我在单个qoutes(我不能在这个框中显示)中编写命令Ruby时,我无法执行`C:\Documents and Settings\test.exe中的命令,并且我收到的错误是没有找到文件或目录。我尝试将"\“替换为"//”和"\“,但似乎都不起作用。我还使用了system、IO.popen和exec命令,但所有的努力都是徒劳的。另外,exec命令使程序退出,这是我不希望发生的。
提前谢谢。
发布于 2011-04-04 02:24:36
`"C:\Documents and Settings\test.exe"`或
`exec "C:\Documents and Settings\test.exe"`或者qoutes中的任何东西
发布于 2011-08-25 20:29:39
反引号环境就像双引号,所以使用反斜杠进行转义。此外,Ruby会将空格解释为分隔命令行参数,因此您需要引用整个内容:
`"C:\\Documents and Settings\\test.exe"`另一种选择是使用system并强制第二个参数。如果system获得多个参数,它会将第一个参数视为要执行的命令的路径,您不需要将该命令引起来:
system('C:\Documents and Settings\test.exe','')注意单引号的使用,所以我们没有转义反斜杠。
当然,这不会得到标准的输出/错误,所以如果您使用的是Ruby1.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}"
endhttps://stackoverflow.com/questions/5531498
复制相似问题