尝试编写一个小的ruby脚本来自动化我目前在Windows命令提示符下手动执行的一些繁琐的工作。
伪代码:
system“adb kill-server”
system“adb start-server”
系统“adb connect 192.168.xxx.xxx”
系统“adb shell”
这就是我被困住的地方。
在adb shell提示符下,我想:
cd到/ some / directory
rm一堆文件
在我的ruby脚本中,如何在adb shell提示符下插入cd命令? 然后在adb shell提示符下插入rm命令。
我试过“系统”没有效果。我假设“system”只能用于与windows命令提示符进行通信,而不是adb shell吗?
非常感谢任何帮助。 感谢。
答案 0 :(得分:0)
尝试以下代码
#!/usr/bin/env ruby
#
require 'pty'
require 'expect'
system "adb kill-server"
system "adb start-server"
system "adb connect 192.168.xxx.xxx"
PTY.spawn("adb shell") do |output, input, process_id|
input.puts("cd /to/some/directory")
input.puts("rm a-bunch-of-files")
input.puts("exit")
end
答案 1 :(得分:0)
user1835175的PTY建议如果有一个等效的工作窗口就会很棒。在ConEmu Bash控制台的Windows7 / Ruby 2.3.0下尝试了rubysl-pty,但没有用,你可以提出一个新的问题如何在Windows中安装它。
我使用Autoit在另一个终端上做了类似的事情。 它有自己的脚本语言,但你也可以从Ruby使用它。
你可以在Ruby中使用它,如下所示(它可以更简单,但我也需要鼠标控制),请参阅其他示例,但这是适用于我的代码..
require 'win32ole'
# AutoIt3 needs to be installed
app = "Adb"
appClass = "[CLASS:SunAwtFrame]" # retrieved with AutoIt Window Info
ai = WIN32OLE.new("AutoItX3.Control")
ai.WinActivate(appClass)
handle = "[HANDLE:#{ai.wingethandle(appClass)}]"
ai.Opt("MouseCoordMode", 0)
ai.Opt("WinTitleMatchMode", 4)
ai.Send('cd \somefolder')
ai.Send('{ENTER}')
...