【问题标题】:Ruby windows command prompt previous linesRuby windows 命令提示符前几行
【发布时间】:2012-11-20 19:59:07
【问题描述】:

是否可以使用 Ruby 编辑已写入命令提示符的内容?

例如,假设我已经向 STDOUT 写入了 10 行,我可以将光标移动到,比如说,石灰 5 并覆盖那一行吗?

谢谢。

【问题讨论】:

  • 你是说 IRB 吗?在您的操作系统的命令提示符控制台中,一次只能执行一系列命令,再次编辑和执行只会重新运行更改的代码
  • 我的意思不是在 IRB 中,我的意思是在我运行我的 ruby​​ 程序的 windows cmd.exe 程序中。我想我需要被诅咒...

标签: ruby windows command-line


【解决方案1】:

是的,您可以,在 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}"

【讨论】:

  • 也许我写得不好,虽然我对你写的东西很感兴趣,但我的问题更多:如果我已经在命令提示符下写了文本,对我来说可能吗用不同的文本覆盖它? (使用 Ruby)
  • 这就是我的回答,是的,通过模拟击键使用 Auto-it,这是唯一的方法,但是如果您可以随时在 Ruby 中执行任何命令,为什么要这样做呢?也许你可以更好地解释你真正想要实现的目标
  • 我正在从串口读取数据到命令提示符,正在读取的数据需要覆盖已经存在的数据。因此,我从串口读取了 5 行数据并显示在命令提示符上,然后,一段时间后,我再次从串口读取了 5 行数据,这 5 行需要覆盖之前的 5 行已经在命令提示符上(不在下面显示)。
  • 您将控制台用作视图,我没有从串行端口读取数据的经验,但您可以捕获这些数据并使用您可以更好地控制的控件,例如 GUI 窗口或再次使用 Watir 浏览器,但如果你真的想这样做,你可以使用我提出的技术。如果你愿意,我可以在星期三给你一个例子。另一种方法是打印一个控制字符来移动光标,但你需要一个 ansi gem 来做到这一点,但是如果你不能向上移动,请参阅我的问题stackoverflow.com/questions/10262235/…
  • 你应该如何将光标移动到上一行?比如如何将光标向上移动三行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
  • 2018-01-04
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多