我有一个位于“C:\ Documents and Settings \ test.exe”目录中的文件,但是当我在单个qoutes(我无法在此框中显示)中编写命令`C:\Documents and Settings\test.exe
时,用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我还使用了system,IO.popen和exec命令,但所有的努力都是徒劳的。此外,exec命令使程序退出,我不想发生。
提前致谢。
答案 0 :(得分:7)
反引号环境类似于双引号,因此反斜杠用于转义。此外,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
答案 1 :(得分:4)
`"C:\Documents and Settings\test.exe"`
或
`exec "C:\Documents and Settings\test.exe"`
或qoutes中的任何内容