首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Ruby中执行Windows CLI命令?

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

Stack Overflow用户
提问于 2011-04-04 02:16:30
回答 2查看 15.3K关注 0票数 7

我有一个位于目录"C:\Documents and Settings\test.exe“中的文件,但是当我在单个qoutes(我不能在这个框中显示)中编写命令Ruby时,我无法执行`C:\Documents and Settings\test.exe中的命令,并且我收到的错误是没有找到文件或目录。我尝试将"\“替换为"//”和"\“,但似乎都不起作用。我还使用了system、IO.popen和exec命令,但所有的努力都是徒劳的。另外,exec命令使程序退出,这是我不希望发生的。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-04 02:24:36

代码语言:javascript
运行
复制
`"C:\Documents and Settings\test.exe"`

代码语言:javascript
运行
复制
`exec "C:\Documents and Settings\test.exe"`

或者qoutes中的任何东西

票数 6
EN

Stack Overflow用户

发布于 2011-08-25 20:29:39

反引号环境就像双引号,所以使用反斜杠进行转义。此外,Ruby会将空格解释为分隔命令行参数,因此您需要引用整个内容:

代码语言:javascript
运行
复制
`"C:\\Documents and Settings\\test.exe"`

另一种选择是使用system并强制第二个参数。如果system获得多个参数,它会将第一个参数视为要执行的命令的路径,您不需要将该命令引起来:

代码语言:javascript
运行
复制
system('C:\Documents and Settings\test.exe','')

注意单引号的使用,所以我们没有转义反斜杠。

当然,这不会得到标准的输出/错误,所以如果您使用的是Ruby1.9.2,您可以使用非常方便的Open3库,它的工作方式与system类似,但它提供了有关您刚刚运行的进程的更多信息:

代码语言:javascript
运行
复制
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
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5531498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档