Windows 탐색기에서 Ruby 스크립트에 파일을 놓을 수 있도록 하려면 어떻게 해야 하나요?

Windows 탐색기에서 Ruby 스크립트에 파일을 놓을 수 있도록 하려면 어떻게 해야 하나요?

Windows 탐색기(Win7)에서 파일을 배치(.bat) 파일에 놓을 수 있으며 배치 파일은 삭제된 파일의 경로를 첫 번째 명령줄 인수로 사용하여 실행됩니다. Ruby 스크립트로 동일한 작업을 어떻게 수행할 수 있나요?

스크립트 내에서 인수를 사용한다는 의미는 아닙니다. 파일이 아이콘 위에 있을 때 Ruby 스크립트는 놓기 대상으로 강조 표시되지 않으며, 파일을 놓으면 아이콘 순서가 변경됩니다. 배치 파일(또는 다른 실행 파일)과 동일하게 작동하기를 원합니다.

답변1

항목을 삭제할 수 있는 파일 유형에는 Windows에 파일 실행 방법을 알려주는 키가 레지스트리에 있습니다. Ruby가 기본적으로 스크립트를 실행하도록 스크립트 확장을 설정했다면 절반쯤 온 것입니다.

(의무적 경고: 이것은 해킹입니다. 레지스트리를 조작하면 컴퓨터가 완전히 망가질 수 있습니다. 데이터에 전혀 신경을 쓰지 않고 저를 신뢰하지 않는다면(또한 그렇게 해서도 안 됩니다), 계속하기 전에 백업해 두십시오. )

  1. 레지스트리 편집기를 시작합니다. "regedit"라고합니다. (Vista 또는 Windows 7을 실행 중인 경우 마우스 오른쪽 버튼을 클릭하고 "관리자 권한으로 실행"해야 할 수도 있습니다.)
  2. HKEY_CLASSES_ROOT\batfile\ShellEx\DropHandler를 엽니다. 기본값으로 GUID가 있습니다. 배치 파일, EXE 파일 및 기타 몇 가지 파일에서 사용되는 값입니다. 나는 Ruby가 사용하는 COM 개체에 대해 알지 못하기 때문에 이것을 남용할 것입니다. 레지스트리에는 ".exe drop target"이라는 레이블이 붙어 있습니다. 그것이 하는 일은 스크립트를 "시작"하여 파일 이름을 args로 전달하는 것입니다.
  3. "(기본값)"을 두 번 클릭하여 값을 엽니다. GUID를 복사한 다음 편집 상자에서 취소하세요.
  4. 이제 HKEY_CLASSES_ROOT에서 "RubyFile"과 "RubyWFile"을 찾으세요. 첫 번째는 콘솔 스크립트용이고 후자는 GUI 스크립트용인 것 같습니다. 만약 당신이 나와 다른 Ruby 인터프리터를 사용하거나 기본 핸들러를 직접 설정했다면 "rbfile" 및/또는 "rbwfile" 키를 대신 찾을 수도 있습니다.
  5. 키 중 하나를 마우스 오른쪽 버튼으로 클릭하고 아직 존재하지 않는 경우 "ShellEx"라는 새 키를 만듭니다. 그런 다음 새 키 안에 "DropHandler"라는 또 다른 키를 만듭니다.
  6. 해당 DropHandler 키의 기본값을 편집하고 3단계에서 복사한 GUID를 붙여넣습니다. 확인을 클릭합니다.
  7. 다른 키로 5단계와 6단계를 반복합니다.

완료되면 파일을 스크립트로 드래그할 수 있습니다.

답변2

기반@cHau'에스답변, 여기에 Ruby 스크립트에 대한 드롭 지원을 설정하는 reg 파일이 있습니다(완전히 테스트되지 않았으므로 컴퓨터가 손상될 수 있습니다) (요점):

Windows 레지스트리 편집기 버전 5.00

[HKEY_CLASSES_ROOT\rbfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\rbwfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\RubyFile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\RubyWFile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

답변3

나는 Ruby 프로그램을 다음과 같이 컴파일했습니다.오크라 보석, Windows 7 탐색기에서 "filename.txt"를 컴파일된 실행 파일(*.exe)로 직접 드래그하면 작동합니다. 내 Ruby의 시작 부분은 다음과 같습니다.

reports='filename.txt' #Opening the file
f = File.open('output.txt', 'w')
File.readlines(reports).each do |line|
   #processing, such as f.puts
end

알 수 없는 파일 이름 끌어서 놓기를 지원하려는 경우 시도해 볼 수 있습니다.

filename = Dir.entries('.').detect {|z| z.match / whatever pattern or extension  /}
File.open(filename.to_s, 'w')

Windows 레지스트리 수정이나 기본 열기 프로그램 설정이 필요하지 않습니다.

답변4

파일 확장자를 사용하여 Ruby를 이 스크립트의 기본 애플리케이션으로 설정해 보세요.

보다여기그것을하는 방법.

관련 정보