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