【问题标题】:How do I create drag-and-drop Strawberry Perl programs?如何创建拖放式草莓 Perl 程序?
【发布时间】:2010-10-16 21:24:08
【问题描述】:

我有一个Strawberry Perl 程序,它接受单个文件作为命令行参数。如何进行设置,以便我可以将所需文件拖放到 Strawberry Perl 程序(或围绕它的包装器)上,并且程序以该文件的名称作为参数运行?

【问题讨论】:

  • 我相信这更多地取决于您的操作系统而不是您的编程语言。您使用的是什么操作系统和版本?
  • @Jack M. -- Strawberry Perl 是 Windows 的新官方 perl。因此,对于(我认为)任何知道答案的人来说,操作系统都隐含在我的问题中。
  • 为了清楚起见:Strawberry Perl 是一个社区支持的 Windows Perl,带有一个捆绑的 gcc 编译器。虽然它不是“官方的 perl”(与 Perl 无关的概念),但它在过去几年中变得非常流行。 strawberryperl.com

标签: windows perl drag-and-drop strawberry-perl


【解决方案1】:

在 Windows 下(用 XP 测试),您可以创建一个 .cmd 文件并简单地让它运行带有 %1 参数的 Perl 程序来传递文件名,就像通过命令行执行一样。

perl c:\test.pl %1

然后你可以简单地将文件拖放到.cmd文件上执行。

【讨论】:

  • 你也可以把这个文件放到你的'send to'文件夹中,然后你可以在shell中对click -> send to进行正确的处理。
  • Frakkle,你就是男人!后续问题:如何使控制台窗口在显示其输出后不立即关闭? :)
  • 罗伯特,谢谢;我有一位同事想让它以这种方式工作。
  • 回答我的后续问题:暂停
  • @skiphoppy - 将“&& pause”添加到您正在运行的命令的末尾。例如,我在我的桌面上为 RCS 签出命令 (co.exe) 做了一个包装器(这是一个包装器很好的例子!)。包装器的内容只是说“co.exe -l %1 && pause”,它会在签出文件后暂停!
【解决方案2】:

哎呀!请不要在不需要时创建包装脚本/cmd。

进入您的注册表或 Windows 中的文件类型对话框,然后重新定义 Perl 默认操作为:

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

这将导致双击 .PL 以使用双击文件 (%1) 的名称启动 perl.exe。 %* 东西(将任何文件名参数传递给 Perl 脚本)比较棘手。

再次进入注册表(真的,它没有人们想象的那么可怕)并在Perl类下找到/创建一个“shellex”键,然后创建一个名为“DropHandler”的子键,默认字符串值为“{86C86720-42A0-1069-A2E8-08002B30309D}”(至少,这是我在美国版 Windows XP 中的 DropHandler)。

这允许 .pl 文件(实际上是与 Perl 类相关的任何内容)有一个放置处理程序,它告诉资源管理器当您在 .pl 脚本上放置文件时要做什么。在这种情况下,它只是意味着“以删除的文件作为参数运行 Perl 脚本”。

嗯,我不认为我解释得很好,但这就是我为大型工程组织设置 Perl(运行网络驱动器)的方式。谷歌 Perl 和 DropHandler,你应该可以得到 .reg 注册表脚本来为你做这件事。

【讨论】:

  • 好电话!我不知道这一点。当然,包装脚本方式的好处是很容易部署到其他机器上。我想这两种方法各有利弊,但这是一个很酷的解决方案。
【解决方案3】:

这是“包装器”的另一种替代方案,但需要对 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 扩展时才有效)。 perl.exe 的 -x 参数告诉 Perl 跳过所有内容,直到 #!perl 行。 “#line 6”只是帮助调试。

当我对目标系统不太了解(并且可能无法编辑注册表)时,这是我的首选解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2012-05-27
    • 1970-01-01
    • 2012-05-21
    • 2015-11-16
    相关资源
    最近更新 更多