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-xスイッチを巧みに使用したものです。

@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 に答える