Подтвердить что ты не робот

Как создать перетаскиваемые программы Strawberry Perl?

У меня есть программа Strawberry Perl, которая принимает один файл в качестве аргумента командной строки. Как я могу настроить такие вещи, чтобы я мог перетащить нужный файл в программу Strawberry Perl (или оболочку вокруг него), и программа запускается с этим именем файла в качестве аргумента?

4b9b3361

Ответ 1

В Windows (протестировано с XP) вы можете создать файл .cmd и просто запустить программу Perl с аргументом% 1, чтобы передать имя файла, как если бы он выполнялся с помощью командной строки.

perl c:\test.pl %1

Затем вы можете просто перетащить файл в файл .cmd для выполнения.

Ответ 2

EEEK! Не создавайте обертку script/cmd, если вам это не нужно.

Перейдите в свой реестр или диалоговое окно "Тип файла" в Windows и переопределите действие по умолчанию для Perl:

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

Это приведет к двойному щелчку .PL для запуска perl.exe с именем файла с двойным щелчком (% 1). Материал% * (передающий любые аргументы имени файла Perl script) более сложный.

Перейдите в реестр снова (действительно, это не так страшно, как думают люди), и найдите/создайте ключ "shellex" в классе Perl, а затем создайте под-ключ под названием "DropHandler" со строковым значением по умолчанию "{86C86720-42A0-1069-A2E8-08002B30309D}" (по крайней мере, мой DropHandler в американской версии Windows XP).

Это позволяет файлам .pl(фактически, что-либо, связанным с классом Perl) иметь обработчик drop, который сообщает Explorer, что делать, когда вы отбрасываете файлы на .pl script. В этом случае это просто означает "запустить Perl script с выпадающим файлом (-ами) в качестве аргументов".

Хммм, я не думаю, что я это очень хорошо объяснил, но так, как я настроил Perl (работает на сетевом диске) для большой инженерной организации. Google для Perl и DropHandler, и вы сможете получить реестр .reg Registry script, чтобы сделать это для вас.

Ответ 3

Здесь другая альтернатива "оболочке", но для нее требуется небольшая модификация perl script:

  • Переименуйте script.pl script в script.cmd.
  • Добавьте в верхнюю часть файла следующее:

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

script запускается как любой другой пакетный файл. Первые три строки в основном запускают Perl в самом файле CMD (%~f0, который работает только в том случае, если включены расширения CMD). Пареметр -x to perl.exe сообщает Perl пропустить все до строки #!perl. "#line 6" просто помогает при отладке.

Это мое предпочтительное решение, когда я мало знаю о целевой системе (и, возможно, не могу редактировать реестр).