如何在Vista 64中通过文件关联传递命令行参数?
-
22-07-2019 - |
题
如何在Vista 64中通过文件关联传递命令行参数?
我最近制造了一台运行Vista Ultimate 64位的PC。我注意到我传输的一些Perl脚本由于未传递命令行参数而失败。作为一个简单的测试,我编写了以下代码(foo.pl): 通用标签
运行“ foo.pl 1 2 3”会产生不希望的结果: 通用标签
运行“ perl foo.pl 1 2 3”有望产生: 通用标签
在旧的Windows XP PC上,两个调用均返回3个参数。我在这里记录了更多的学习资料( win32.perl.org Wiki),但我还没有找到一种可行的解决方案。
我也尝试了ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi。
任何帮助将不胜感激。这让我发疯了。
解决方案
我刚刚在Vista 64 Ultimate上尝试了ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi,并且可以正常工作。 通用标签
这意味着 devio是正确的:必须是“文件关联”问题;
在资源管理器上,右键单击您的.pl文件并询问“打开方式”:使用“ Perl命令行解释器”,它将起作用(并选择“始终使用此程序来打开这种类型的文件”)
对我来说,“ Vista的文件扩展名管理器删除了将参数传递给函数的功能”似乎是错误的...
我确实看到了: 通用标签
意思是如果您的安装未在注册表中添加这种值,那是因为:
- 在设置ActivePerl-5.10.0.1004-MSWin32-x64-287188.msi时未选择关联
- 或者您的帐户没有足够的权限在注册表中写入任何内容。
注意:
- Vista上的常规扩展管理器似乎没有传递参数(意味着不带
\"C:\\Perl64\\bin\\perl.exe\" \"%1\"
参数的%*
) - 必须添加注册表 SO记录的
- Vista上的常规扩展管理器似乎没有传递参数(意味着不带
其他提示
不了解Vista和64位,但是在Windows的“经典”版本下,您可以编辑注册表: 通用标签
包含默认字符串“ Perl” 通用标签
包含默认字符串: 通用标签
其中%*是第一个参数之后所有参数的宏。%*可能丢失。
Vista的文件扩展名管理器删除了将参数传递给程序的功能。您必须手动编辑注册表(例如devio提及)(或使用其他程序来编辑文件扩展名)。
对于Perl初学者来说,有趣的是 ARGV区分大小写 ... ...花了一个小时试图找出为什么我的命令行参数未传递的原因,这仅仅是我用argv [0]代替了ARGV [0] ...