4

Ruby を使用してコマンド プロンプトに既に書き込まれている内容を編集することはできますか?

たとえば、STDOUT に 10 行を書き込んだとします。カーソルをライム 5 に移動して、その行だけを上書きできますか?

ありがとう。

4

1 に答える 1

2

はい、できます。Windows Vista、7、おそらく 8、および 4NT や Take Command などの一部のサードパーティの拡張コマンド インタープリタでは、up キーを使用して以前のコマンドを呼び出し、行を編集して行を再実行できます。 . Ruby がこれに何をしなければならないのか、私にはわかりません。auto-it Active-X コントロールを使用して、Ruby がコンソールでキーストロークを入力できるようにしたい場合。

編集: ここでは、Autoitを使用してコンソールを編集するサンプルをダウンロードしてインストールし、次のスクリプトを実行します。スクリプトが他の開いているコンソールと対話しないようにするために、最初に起動される cmd2.exe に mu cmd.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}"
于 2012-12-03T23:53:37.573 に答える