2015-08-08 131 views
0

紅寶石版本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'? –

回答

0

我很確定這是一個64-bit (WOW64) redirection問題。

嘗試像

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

,看看是否可行。