bat调用Perl脚本接收不到参数
perl -d checkLog.pl --logfile=E:\temp4\test.log --batch-name="Test-log"
这样写在BAT文件里肯定能接收到参数
checkLog.pl --logfile=E:\temp4\test.log --batch-name="Test-log"
但当这样写时,就不一定能接受到参数了!
现象:在Win11系统上还好,只需要在*.pl文件 - 右键’属性’ - 打开方式 - 选择perl.exe 就能正常调用
图[1]
但在Windows10 / Windows Service 2022 DataCenter上pl脚本能调起来,但是总是提示没有传参数,后来发现少东西
如下图,是把Perl环境完全删除时,再次打开*.pl程序时,提示选择打开方式,最后少了%*
图[2]
下面说具体的操作方法
方案一:在CMD里
assoc .pl=PerlScript
ftype PerlScript=C:\Perl\strawberry5.36\perl\bin\perl.exe" "%1" %
然后在*.pl文件 - 右键’属性’ - 打开方式 - 选择perl.exe (这一步不可缺少,不然BAT调用pl程序时会出弹窗,让你选择关联程序)
方案二
1.先操作:在*.pl文件 - 右键’属性’ - 打开方式 - 选择perl.exe
2.打开注册表找到以下位置
HKEY_CLASSES_ROOT\Applications\perl.exe\shell\open\command
"C:\Perl\strawberry5.36\perl\bin\perl.exe" "%1" %*
如果’数据’里的缺少%* 就需要手动加上(它的作用是接收后面所有参数)
是不是有点晕,以下根据上图做下解释
①的位置’UserChoice’ - ProgId=pl_auto_file决定了通过那个程序打开.pl脚本,LZ这里是’pl_auto_file’,对应的是③这个地方就缺少了%*,所以会造成接收不到.pl后面的参数,需要自己手动加!
①的位置也可能是’PerlScript’,这时就得去找②位置,看里面的值是否完整,例如"C:\Perl\strawberry5.36\perl\bin\perl.exe" "%1" %
这种形式