문제

나는 가지고있다 딸기 perl 단일 파일을 명령 줄 인수로 받아들이는 프로그램. 원하는 파일을 딸기 Perl 프로그램 (또는 주변의 래퍼)으로 끌고 삭제할 수 있도록 어떻게 설정할 수 있으며 프로그램은 해당 파일의 이름으로 인수로 실행됩니까?

도움이 되었습니까?

해결책

Windows (XP로 테스트)에서 .CMD 파일을 작성하고 CommandLine에 의해 실행 된 것처럼 파일 이름을 전달하기 위해 %1의 인수로 Perl 프로그램을 실행하도록 할 수 있습니다.

perl c:\test.pl %1

그런 다음 파일을 .cmd 파일로 드래그하여 삭제하여 실행할 수 있습니다.

다른 팁

eeek! 필요하지 않을 때는 래퍼 스크립트/CMD를 만들지 마십시오.

Windows에서 레지스트리 또는 파일 유형 대화 상자로 이동하여 Perl Default 조치를 재정의하여 다음을 재정의하십시오.

"C:\path-to-perl-folders\perl.exe" "%1" %*

이렇게하면 .pl을 두 번 클릭하면 두 번 클릭 된 파일 (%1)의 이름으로 perl.exe를 시작합니다. %* 물건 (파일 이름 인수를 Perl 스크립트에 전달)은 까다 롭습니다.

다시 레지스트리로 이동 (실제로 사람들이 생각하는 것만 큼 무섭지 않음) 및 Perl 클래스에서 "Shellex"키를 찾아서 만들고, 기본 문자열 값이 "{86c86720 인"Drophandler "라는 하위 키를 만듭니다. -42A0-1069-A2E8-08002B30309D} "(적어도 미국 버전의 Windows XP의 Drophandler입니다).

이를 통해 .pl 파일 (실제로 Perl 클래스와 관련된 모든 것)은 Explorer에게 .pl 스크립트에서 파일을 삭제할 때해야 할 일을 알려주는 드롭 핸들러를 가질 수 있습니다. 이 경우 "삭제 된 파일을 인수하여 Perl 스크립트를 실행"을 의미합니다.

흠, 나는 그것을 잘 설명하지는 않았지만 대규모 엔지니어링 조직을 위해 Perl (네트워크 드라이브를 실행)을 설정하는 방법입니다. Perl 및 Drophandler 용 Google,이를 위해 .reg Registry 스크립트를 얻을 수 있어야합니다.

다음은 "래퍼"에 대한 또 다른 대안이 있지만 Perl 스크립트를 약간 수정해야합니다.

  1. script.pl 스크립트 이름을 script.cmd로 바꿉니다.
  2. 파일 상단에 다음을 추가하십시오.

@SETLOCAL ENABLEEXTENSIONS
@c:\path\to\perl.exe -x "%~f0" %*
@exit /b %ERRORLEVEL%
#!perl
#line 6
# ...perl script continues here...

스크립트는 다른 배치 파일과 마찬가지로 실행됩니다. 처음 세 줄은 기본적으로 CMD 파일 자체에서 Perl을 호출합니다 (%~f0, CMD 확장이 켜진 경우에만 작동합니다). 그만큼 -x paremeter to perl.exe는 Perl에게 모든 것을 건너 뛰라고 말합니다. #!perl 선. "#line 6"그냥 디버깅에 도움이됩니다.

이것은 대상 시스템에 대해 잘 모르고 레지스트리를 편집하지 못할 때 선호하는 솔루션입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top