2012-12-03 9 views
4

Ruby를 사용하여 명령 프롬프트에 이미 기록 된 내용을 편집 할 수 있습니까?Ruby windows 명령 프롬프트 이전 줄

예를 들어 STDOUT에 10 줄을 썼다고 할 때, 커서를 5 등분으로 옮기고 그 줄을 덮어 쓸 수 있습니까?

감사합니다.

+0

IRB를 의미합니까? 운영 체제의 명령 프롬프트 콘솔에서 한 번에 하나의 명령 만 실행할 수 있으며 편집 및 다시 실행하면 변경된 코드가 다시 실행됩니다. – peter

+0

IRB를 의미하지는 않지만 Windows의 cmd.exe 프로그램을 의미합니다. 나는 내 루비 프로그램을 실행한다. 나는 저주받을 필요가 있다고 생각하고있다 ... –

답변

2

예, Windows Vista에서 7, 아마도 8 및 일부 타사 확장 명령 해석기 (예 : 4NT 및 Take Command)에서 이전 키를 사용하여 이전 명령을 호출하고 줄을 편집 한 다음 -execute the line. 루비가이 일과 관련이 있다는 것을 나는 모른다. Ruby가 auto-it Active-X 컨트롤을 사용하여 콘솔에서 키 입력을 할 수있게하려는 경우.

EDIT : 여기에 Autoit을 사용하여 콘솔을 편집하고 다운로드하고 설치 한 후 다음 스크립트를 실행하십시오. 스크립트가 다른 열린 콘솔과 상호 작용하지 않도록하려면 먼저 mu cmd.exe를 cmd2.exe에 복사합니다.이 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}" 
+0

아마 내가 쓰는 것에 관심이 있지만, 내 질문은 더 많았다 : 나는 이미 글을 쓰고있다. 명령 프롬프트에서 다른 텍스트로 덮어 쓸 수 있습니까? (Ruby 사용) –

+0

그게 내가 그렇다고 대답했는데, 키 입력을 시뮬레이트하여 Auto-it을 사용했다. 이것이 유일한 방법이지만, Ruby에서 언제든지 명령을 실행할 수 있다면 어째서 그렇게할까요? 아마도 당신이 정말로 원하는 것을 더 잘 설명 할 수있을 것입니다. – peter

+0

시리얼 포트에서 명령 프롬프트로 데이터를 읽는 중입니다. 읽고있는 데이터는 이미 존재하는 데이터를 덮어 써야합니다. 그래서, 나는 시리얼 포트에서 5 라인의 데이터를 읽고 디스플레이는 명령 프롬프트에있다. 그런 다음 얼마 후에, 직렬 포트에서 다시 5 라인을 읽고, 그 5 라인은 이전 5 라인을 덮어 써야한다. 명령 프롬프트에 이미 있습니다 (밑에 표시하지 않음). –