正如其他人指出的那样perl blah.pl asdf
有效,同时blah.pl asdf
失败。这是因为当您直接运行 perl 脚本时,Windows 意识到它必须调用 perl,并使用规则perl "%1"
,它仅将脚本名称传递给 perl,而不传递任何参数。
要解决这个问题,你必须告诉windows使用该规则perl "%1" %*
如何做到这一点可能有点乏味:
Option 1
根据佩尔蒙克斯 http://www.perlmonks.org/?node_id=816922,你应该能够使用assoc
and ftype
在命令行上。事实上,如果你输入help ftype
,它告诉你如何设置 perl:
assoc .pl=PerlScript
ftype PerlScript=perl.exe %1 %*
To run assoc
需要 cmd 运行为行政人员在窗口 7 上。
但是,这对我不起作用。 Windows 忽略了该关联。我不得不修改注册表。这可能是由于运行的错误建议造成的Default Programs
Win 7 上的实用程序,可让您指定用于给定文件扩展名的程序。与XP不同, 这会not允许您指定多个命令选项(在右键菜单中使用)——它将only允许您指定双击文件(或从命令行运行 foo.pl)时使用的程序。
Option 2
修改注册表:HKEY_CLASSES_ROOT
如果您使用过 assoc/ftype 命令,您可能有以下条目perl
or PerlScript
。正如我之前所说,这些将被忽略。寻找pl_auto_file
,并深入到command
:
HKCR\pl_auto_file\shell\open\command
这里的(Default)
应该设置为类似:"C:\Perl\bin\perl.exe" "%1"
添加缺失的%*
最后你应该可以开始了:"C:\Perl\bin\perl.exe" "%1" %*
无需重新启动。
Option 3
如果您懒惰且容易相信别人,您可以尝试将其用作 reg 文件,并将其导入到您的注册表中:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\pl_auto_file\shell\open\command]
@="\"C:\\Perl\\bin\\perl.exe\" \"%1\" %*"
这应该足以使blah.pl asdf
work.