IO.open说,命令无法识别

问题描述:

红宝石版本IO.open说,命令无法识别

c:\temp> C:\opt\sensu\embedded\bin\ruby --version 
ruby 2.0.0p645 (2015-04-13) [i386-mingw32] 

我有这样的Ruby脚本

cmd = "c:\\windows\\system32\\pslist.exe | findstr notepad" 
output = IO.popen(cmd).readline 
... 

它引发以下错误

'c:\windows\system32\pslist.exe' is not recognized as an internal or external command, 
operable program or batch file. 

但是如果我在命令提示符下运行pslistc:\windows\system32\pslist.exe,它运行正常并按预期生成结果。

为什么它不能在红宝石中工作?

编辑

很显然,如果我叫 “tasklist”,它的工作原理。但替代命令“pslist”只是失败。

+0

它是64位Windows安装吗? 'ruby -v'的输出是什么? – cremno

+0

为什么'pslist.exe'甚至在system32文件夹中?例如,它可以用'C:\ tools \ pslist.exe'来复制吗? – cremno

+0

是否可以用'IO.popen'运行'cmd.exe'? –

我很确定这是一个64-bit (WOW64) redirection问题。

尝试像

cmd = "#{File.join(ENV['windir'], 'sysnative', 'pslist.exe'} | findstr notepad" 

,看看是否可行。