2

所以,我想知道如何将参数从 Windows 中的 .bat 文件传递​​给 perl 脚本。我正在运行主动 perl。如果您想知道为什么,我正在为 awstats+iis 自动进行日志索引。

我只需直接输入命令就可以做到这一点:

 awstats.pl -config:blahblah.com -update

我尝试将其直接放入我的批处理文件中。我也尝试使用标准的批处理文件方式:

 awstats.pl /config:blahblah.com /update

我什至试过这个,认为破折号被 perl 以不同的方式解析:

 awstats.pl /-config:blahblah.com /-update

所以我想我会尝试逃避破折号(当然是为了好玩):

  awstats.pl /%-config:blahblah.com /%-update

然后我尝试了上述组合,试图逃避冒号:

 awstats.pl /config%:blahblah.com /update

这些都没有产生我在输入命令时得到的成功屏幕。是的,我有一个暂停,所以我可以验证...

有什么想法吗?关于参数,我有什么明显的遗漏吗?

4

3 回答 3

3

我对批处理文件一无所知,但是 Perl 附带的许多程序在Strawberry Perl中都有等效的批处理文件。它们都长这样,这是对perl's -xswitch的巧妙使用:

@rem = '--*-Perl-*--
@echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
@rem ';
...perl script goes here...
__END__
:endofperl
于 2012-04-05T07:42:46.677 回答
1

问题出在批处理文件中,冒号变成了等号。

 awstats.pl -config=blahblah.com -update

这很奇怪,因为命令行接受一个冒号作为参数。也许它在批处理文件或其他东西中被神奇地忽略了。

于 2012-04-05T00:42:42.820 回答
0

尝试显式调用 perl:

perl awstats.pl -config:blahblah.com -update

还要确保 perl 在你的 %PATH% 中。

于 2012-04-05T00:40:40.787 回答