2012-12-03 46 views
4

是否可以使用Ruby編輯已寫入命令提示符的內容?Ruby windows命令提示符之前的行

例如,假設我已經寫了10行到STDOUT,可以將光標移動到例如lime 5並覆蓋那行嗎?

謝謝。

+0

您的意思是IRB?在操作系統的命令提示符控制檯中,一次只能執行一系列命令,再次編輯和執行只會重新運行已更改的代碼。 – peter

+0

我並不是指在IRB中,我的意思是在Windows cmd.exe程序中我跑我的紅寶石程序。我想我需要詛咒... –

回答

2

是的,您可以在Windows Vista,7和大概8以及某些第三方擴展命令解釋程序(如4NT和Take Command)中使用向上鍵回憶以前的命令,編輯行並重新編譯 - 執行該行。我沒有看到Ruby與此有什麼關係。如果您想讓Ruby在控制檯中鍵入按鍵,可以使用auto-it Active-X控件。

編輯:這裏是一個使用Autoit編輯控制檯,下載並安裝它然後運行以下腳本的示例。爲了確保腳本不與其他開放控制檯交互,我將mu cmd.exe複製到首先啓動的cmd2.exe。

require 'win32ole' 

title = "C:\\Windows\\System32\\cmd2.exe" 
STDOUT.sync = true 
ai = WIN32OLE.new("AutoItX3.Control") 
ai.winwait(title) 
ai.WinActivate(title, "") 
ai.Send "cls{ENTER}" 
1.upto(4) do |i| 
    ai.Send "line#{i}{ENTER}" 
end 
1.upto(4) do |i| 
    ai.Send "{UP}" 
    sleep 1 
end 
ai.Send "line one {ENTER}" 
+0

也許我沒有寫得很好,雖然我對你寫的內容感興趣,但我的問題更多:如果我已經寫了文本在命令提示符下,是否可以用不同的文本覆蓋它? (使用紅寶石) –

+0

這就是我回答是的,通過模擬鍵擊使用Auto-it,這是唯一的方法,但爲什麼如果你可以隨時在Ruby中執行任何命令?也許你可以更好地解釋你真正想實現的目標 – peter

+0

我正在從串口讀取數據到命令提示符,並且正在讀取的數據需要覆蓋已經存在的數據。所以,我從串口讀取5行數據,並在命令提示符下顯示,然後在一段時間後,我再次從串口讀取5行,這5行需要覆蓋前面的5行已經在命令提示符下(不在下面顯示它們)。 –