如何在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和64位,但是在Windows的“经典”版本下,您可以编辑注册表: 通用标签

包含默认字符串“ Perl” 通用标签

包含默认字符串: 通用标签

其中%*是第一个参数之后所有参数的宏。%*可能丢失。

Vista的文件扩展名管理器删除了将参数传递给程序的功能。您必须手动编辑注册表(例如devio提及)(或使用其他程序来编辑文件扩展名)。

对于Perl初学者来说,有趣的是 ARGV区分大小写 ... ...花了一个小时试图找出为什么我的命令行参数未传递的原因,这仅仅是我用argv [0]代替了ARGV [0] ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top