我无法弄清楚为什么 Perl 脚本在我的环境中没有接收命令行参数。我运行了这一系列命令来尝试验证所有配置并演示问题输出。
C:\Users\bmarty\Desktop>assoc .pl
.pl=PerlScript
C:\Users\bmarty\Desktop>ftype PerlScript
PerlScript=c:\tools\Perl64\bin\perl5.16.3.exe "%1" %*
C:\Users\bmarty\Desktop>.\test.pl a b c
C:\Users\bmarty\Desktop>c:\tools\Perl64\bin\perl5.16.3.exe .\test.pl a b c
abc
如您所见,PL 文件的默认命令行与我手动输入的命令行之间存在差异,我不知道原因。
答案1
显然HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pl
会覆盖存储在中的assoc
和ftype
信息HKEY_CLASSES_ROOT
。删除 .pl 键解决了该问题。
目前尚不清楚除了直接编辑 Windows 2012 R2 中的注册表之外是否有其他方法可以解决此问题(Windows 的早期版本在 GUI 中有文件类型关联编辑器,但 Windows 2012 R2 似乎没有这个)。