我有一个使用Strawberry Perl编写的程序,它接受一个单一文件作为命令行参数。 我该如何设置程序,使得我可以将所需的文件拖放到Strawberry Perl程序(或其包装程序)上,并使用该文件名作为参数运行该程序?
我有一个使用Strawberry Perl编写的程序,它接受一个单一文件作为命令行参数。 我该如何设置程序,使得我可以将所需的文件拖放到Strawberry Perl程序(或其包装程序)上,并使用该文件名作为参数运行该程序?
在Windows下(已测试XP),您可以创建一个.cmd文件,并简单地使用参数%1运行Perl程序,以像在命令行中执行一样传递文件名。
perl c:\test.pl %1
那么您可以简单地将文件拖放到 .cmd 文件上以执行。
哎呀!当你不需要时,请不要创建一个包装脚本或命令。
进入Windows的注册表或文件类型对话框,并重新定义Perl的默认操作,例如:
"C:\path-to-perl-folders\perl.exe" "%1" %*
这将导致双击.PL文件启动perl.exe并使用双击的文件名(%1)打开。处理%*(将任何文件名参数传递给Perl脚本)比较棘手。
再次进入注册表(实际上它并不像人们想象的那么可怕),为Perl类找到/创建一个"shellex"键,然后创建一个名为"DropHandler"的子键,其默认字符串值为"{86C86720-42A0-1069-A2E8-08002B30309D}"(至少在Windows XP的美国版本中是我的DropHandler)。
这允许.PL文件(实际上是与Perl类相关联的任何文件)具有拖放处理程序,告诉资源管理器在您将文件拖到.PL脚本上时要执行什么操作。在这种情况下,它只意味着"使用拖放的文件作为参数运行Perl脚本"。
嗯,我觉得我没有很好地解释清楚,但这就是我为一个大型工程组织设置Perl(从网络驱动器运行)的方式。在Google中搜索Perl和DropHandler,您应该能够获取.reg注册表脚本来为您完成此操作。