【问题标题】:How do I open a file using its default application from Perl on Windows?如何在 Windows 上使用 Perl 的默认应用程序打开文件?
【发布时间】:2009-01-05 22:29:16
【问题描述】:

我有一个文件目录,我想定期扫描并使用它们关联的默认应用程序执行。它们是不可执行的,所以 system("file.torrent");不起作用。您如何在 Perl 中使用相关应用程序运行文件?

【问题讨论】:

    标签: windows perl system


    【解决方案1】:

    标准的windows方式是ShellExecute

    在 perl 中,您可以使用 ShellExecute 来完成。它在Win32::GUI package

    没试过。但看起来很简单。

    【讨论】:

      【解决方案2】:

      开始

      您可以手动解析注册表的相关部分,找到相关的应用程序,然后自己启动它:但是命令提示符的内置启动命令生活更轻松。

      因此,对于您的示例,您只需执行一个 system("cmd /c start file.torrent")

      【讨论】:

      • 如果注册表现在将关联的应用程序,他可以使用 system() 方法来启动它。
      【解决方案3】:

      不是 Perl 特定的,但您始终可以使用“开始”命令。第一个参数是打开的新命令提示符的标题,第二个参数是要打开的文件。

      system('start "dummy title" "some file.doc"'); # opens the document in word
      

      【讨论】:

        【解决方案4】:

        我们使用的另一个选项是

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

        【讨论】:

          【解决方案5】:

          永远不要在 Windows 上使用 system() ! 蹩脚的坏方法(PAS)

          【讨论】:

            【解决方案6】:

            只是为了突出上面 BeowulfOF 的评论

            system( "test.log" )
            

            将在其关联的应用程序中打开 test.log,就像进入一样

            test.log
            

            在命令行上

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-29
              • 2021-10-23
              • 2020-06-03
              相关资源
              最近更新 更多