Как открыть файл с помощью приложения по умолчанию из Perl в Windows? - PullRequest
2 голосов
/ 06 января 2009

У меня есть каталог файлов, которые я хотел бы регулярно сканировать и выполнять с приложением по умолчанию, с которым они связаны. Они не являются исполняемыми, поэтому system ("file.torrent"); не работает. Как вы можете запускать файлы с соответствующими приложениями в Perl?

Ответы [ 6 ]

7 голосов
/ 06 января 2009

Стандартный способ для Windows - ShellExecute .

В Perl вы можете сделать это с помощью ShellExecute. В пакете Win32 :: GUI .

Не пробовал. Но это выглядит достаточно просто.

6 голосов
/ 06 января 2009

1001 * начать *

Вы можете вручную проанализировать соответствующую часть реестра, найти соответствующее приложение и запустить его самостоятельно: но встроенная в командную строку жизнь команды запуска проще.

Итак, для вашего примера вы бы просто сделали систему ("cmd / c start file.torrent")

3 голосов
/ 06 января 2009

Не специфично для Perl, но вы всегда можете использовать команду 'start'. Первым аргументом будет заголовок новой открытой командной строки, а вторым аргументом - файл, который нужно открыть.

system('start "dummy title" "some file.doc"'); # opens the document in word
1 голос
/ 06 января 2009

Другой вариант, который мы используем, это

system("RunDLL32.exe SHELL32.DLL,ShellExec_RunDLL file.torrent")

0 голосов
/ 07 декабря 2010

Просто чтобы выделить комментарий BeowulfOF выше

system( "test.log" )

откроет test.log в связанном приложении так же, как и введет

test.log

в командной строке

0 голосов
/ 06 января 2009

Никогда не используйте system () на окнах! Дрянной и плохой метод (ПА)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...