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.
但是如果我在命令提示符下运行pslist
或c:\windows\system32\pslist.exe
,它运行正常并按预期生成结果。
为什么它不能在红宝石中工作?
编辑
很显然,如果我叫 “tasklist
”,它的工作原理。但替代命令“pslist
”只是失败。
答
我很确定这是一个64-bit (WOW64) redirection问题。
尝试像
cmd = "#{File.join(ENV['windir'], 'sysnative', 'pslist.exe'} | findstr notepad"
,看看是否可行。
它是64位Windows安装吗? 'ruby -v'的输出是什么? – cremno
为什么'pslist.exe'甚至在system32文件夹中?例如,它可以用'C:\ tools \ pslist.exe'来复制吗? – cremno
是否可以用'IO.popen'运行'cmd.exe'? –