2012-04-05 18 views
2

Also frage ich mich, wie Parameter an ein Perl-Skript aus einer .bat-Datei in Windows übergeben. Ich betreibe aktive Perl. Wenn Sie sich fragen, warum, automatisiere ich Logindizierung für awstats + iis.wie Parameter an Perl-Skript von Batch-Datei übergeben

Ich kann diese feine tut einfach den Befehl eingeben direkt:

awstats.pl -config:blahblah.com -update 

Ich habe versucht, das direkt in meiner Batch-Datei setzen. Ich habe versucht, auch die Standard-Batch-Datei Art und Weise mit:

awstats.pl /config:blahblah.com /update 

ich dies sogar versucht wurde der Strich zu denken durch Perl anders analysiert:

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

Also dachte ich, ich würde den Strich versuchen zu entkommen (für Spaß, natürlich):

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

Dann habe ich versucht, die oben genannten Kombinationen, um den Darm zu entkommen versucht:

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

Keiner von diesen erzeugte den Erfolg Bildschirm, den ich bekomme, wenn ich den Befehl eintippte. Ja, ich hatte eine Pause, damit ich bestätigen konnte ...

Irgendwelche Gedanken? Gibt es etwas Offensichtliches, was mir an Parametern fehlt?

Antwort

1

Das Problem war in Batch-Datei sprechen, der Doppelpunkt wird ein Gleichgestellter.

Das ist aber seltsam, weil die Befehlszeile einen Doppelpunkt für Params akzeptiert. Vielleicht wird es in Batch-Dateien oder so etwas magisch ignoriert.

+0

Hmm ... mit '=' oder Leerzeichen zwischen dem Schalter und dem folgenden Argument ist die Standardmethode, mit der Perl seine Argumente analysiert ... Ich frage mich, warum ':' tatsächlich akzeptiert wurde, wenn es in der cmd-Shell ausgegeben wurde. Führe 'perldoc Getopt :: Long' für die blutigen Details aus. –

+0

Ja, ich hatte tatsächlich ':' von awstats doc gezogen. Vielleicht repariert die Cmd-Shell es automatisch? – FlavorScape

0

Try Aufruf perl ausdrücklich:

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

auch sicher, dass Perl in Ihrem% PATH% liegt.

+0

Nö, habe ich registriert bereits die Handler Mappings auf dem Perl-Interpreter Punkt .pl. Schöne Vermutung, tho. – FlavorScape

+0

Ich glaube nicht, dass das in einer Batchdatei funktionieren wird. –

+0

Wenn es sich um eine Handler-/Erweiterungs-Sache handelt, geben Sie ihr eine andere Erweiterung und registrieren Sie sie nach Belieben. Nicht, dass Sie das tun sollten, aber Perl interessiert nicht, welche Erweiterung Sie verwenden. –

3

Ich weiß nichts über Batch-Dateien, aber viele der Programme, die mit Perl kommen, haben Batch-Datei-Entsprechungen in Strawberry Perl. Sie sind alle so aussehen, das ist eine clevere Nutzung von perl ‚s -x Schalter:

@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 
+0

interessant, aber ich suchte nach einer "windiger" Lösung, weil wir hier keinen einzigen Perl-Entwickler haben - und es wäre für zukünftige Wartungsprogrammierer leichter zu verstehen/zu aktualisieren. – FlavorScape