我想使用win32ole
来实现这一点,而不是在ruby中执行shell命令的任何其他方法。
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
my_username = shell.ShellExecute('cmd.exe', 'username', '', 'open', 0)
puts my_username
#Current output => nil
只想打印我的用户名,但通常想要执行任何命令并获取其输出。我知道我们有ENV['user']
或echo %username%
给了我想要的但只想使用win32ole。
提前多多感谢。
答案 0 :(得分:1)
您应该尝试使用 whoami
代替username
:
require 'win32ole'
shell = WIN32OLE.new('Shell.Application')
my_username = shell.ShellExecute('cmd.exe', 'whoami', '', 'open', 0)
puts my_username
击> <击> 撞击>
您无法使用ShellExecute()
,因为它不允许您访问您想要的运行命令的输出。有关该点的更多信息,请参阅Using ShellExecuteEx and capturing standard in/out/err。
我会简单地使用puts ENV['USERNAME']
,就像魅力一样。 (或者 Ilia Aptsiauri 在他的回答中给出的任何命令)
答案 1 :(得分:0)
如果您只想执行Windows CLI命令,则需要采取一些不同的方法。
而不是whoami
你可以放任何你想要的命令
system("whoami")
spawn("whoami")
这些之间的区别如下
在输出过程中还有一个选项检查Open3
库可以获得更多信息。