0

目标

将已安装的 Chocolatey 包与Chocolatey Gallery上的最新可用版本进行比较,cinst packageName如果最新版本 > 已安装版本,则安装 ( ) latest。

问题

这篇文章中适用的代码java -version已用于读取clist -lo.

command = "clist -lo"

require 'open3'
Open3.popen3(command) do | stdrin, stdout, stderr|
  p stderr.read
  p stdout.read
end

在命令提示符下也stderr.read不会返回输出。stdout.read路径变量是正确的。在默认路径上使用 cmd执行clist -lo会返回已安装 Chocolatey 包的列表。

问题

如何clist -lo使用 Ruby 获取输出?

4

1 回答 1

1

不确定这是否是您要查找的内容,但您可以使用capture3而不是 popen3 来捕获输出。

command = "clist -lo"

require 'open3'
stdout, stderr, status = Open3.capture3(command)

puts "stdout: #{stdout}"
puts "stderr: #{stderr}"
puts "status: #{status}"

结果是

stdout: 7zip.install 9.22.01.20130618
autohotkey_l 1.1.13.01
autohotkey_l.install 1.1.13.01
chocolatey 0.9.8.23
ChocolateyGUI 0.11.1
ConsoleZ 1.9.1.13351
cyg-get 1.1.0
cygwin 1.7.23.20130814
expresso 3.0.4334.20120225
git.install 1.8.3
Listary 4.02.1360
PowerShell 3.0.20121027
putty 0.63.0
ruby 2.0.0.24700
TeraCopy 2.27
Reading environment variables from registry. Please wait... Done.
stderr:
status: pid 47528 exit 0

为了我

于 2014-05-03T03:35:22.920 回答