2017-03-05 59 views
-1

試圖寫一個小紅寶石腳本來自動化一些繁瑣的東西,我目前在Windows命令提示符手動。亞行外殼和紅寶石

僞代碼:

系統 「ADB殺服務器」

系統 「亞行啓動服務器」

系統 「亞行連接192.168.xxx.xxx」

系統「ADB外殼「

這是我卡住的地方。

在亞行的shell提示符下,我想:

cd到/一些/目錄

RM一堆文件

在我的Ruby腳本的,我怎麼插入的cd命令adb shell提示符? 然後在adb shell提示符處插入rm命令。

我試過「系統」沒有效果。我假設「系統」只能用於與Windows命令提示符通信,而不是adb shell?

任何幫助將不勝感激。 謝謝。

回答

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 
+0

PTY沒有按」在windows下工作,rubysl-pty用於Ruby 1.9.3,但不是2.3.0 – peter

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}') 
...