运行 来自 Ruby 的 cmd 命令

Run command in cmd from Ruby

我知道这可能是一个非常简单的问题,但我很难找到解决方案。我正在 cmd 中处理 windows。我只是想使用这个命令:

find /i \"chef_server_url\" C:/chef/client.rb

我知道命令有效。它只是 return 在我要检查的文件中 url。

我想在代码中执行此操作,return 在我的代码中执行结果。但是我很难格式化字符串,尤其是使用转义字符

我正在使用 %x[] 这样做。所以理想情况下我只想说
%x[find /i \"chef_server_url\" C:/chef/client.rb]

但是 c:/chef/client.rb 不会正确格式化,因为它认为 /c 和 /c 不应该是那样的

您是否正在尝试从 Chef 内部访问 Chef 服务器 URL?您可以使用 Chef::Config[:chef_server_url] 但更深层次的问题是您要做什么?

对您的问题的简短回答是 运行 ruby 中的系统命令有不止一种方法:

  • Kernel#system 方法采用纯字符串,因此只要您的命令可以准确地用字符串表示,它就应该可以工作。 system 'find /i "chef_server_url" C:/chef/client.rb' 之类的东西应该可以。
  • 反引号会做类似的事情,它应该看起来像这样:find /i "chef_server_url" c:/chef/client.rb(用 `backticks` 包装,我不确定如何在 StackExchange 上格式化)。

我首先建议获取命令的字符串表示形式,puts 将其复制粘贴到命令 window。如果有效,则通过 system.

发送

但是,和这里的其他人一样,我怀疑对于您要解决的潜在问题有更好的解决方案。

我不在 windows 测试计算机附近,所以你必须用这些进行试验。