2017-02-22 3 views
1

Meine Batch-Datei unten, erstellt eine .avs-Datei für eine bestimmte Liste von Parametern und führt dann ein Programm, das diese .avs-Datei als Argument nimmt und dies mehrmals in einer for-Schleife.Meine Windows-Charge sagt: "72 war zu dieser Zeit unerwartet."

Aber wenn ich meine Batch-Datei ausführen, druckt es 72 is unexpected at this time., 72 ist der Wert eines der Parameter. Die .avs-Datei wird nicht erstellt und das Programm wird nicht ausgeführt.

Meine Batch-Datei und ihre Ausgabe an der Eingabeaufforderung mit REM @echo off ist unten.

Meine Batch-Datei:

REM @echo off 

set RawSource26=C:\_rawsource26\RawSource26.dll 
set avsFile=.\temporary.avs 
set avs2yuv=C:\_avs2yuv\avs2yuv.exe 

set video=balloons 
set views=^ 
1^
2^
3^
4^
5 
set rates=^ 
1Mbps^
2Mbps^
3Mbps^
4Mbps^
5Mbps 
set width=1024 
set height=768 
set cropLeft=72 
set cropTop=0 
set cropRight=0 
set cropBottom=0 

(for %%v in (%views%) do (
    @echo. 2> %avsFile% 
    @echo LoadPlugin("%RawSource26%") >> %avsFile% 
    @echo Crop(RawSource(".\renderOut\%video%_%%v_synth.yuv", %width%, %height%, "i420"), %cropLeft%, %cropTop%, %cropRight%, %cropBottom%) >> %avsFile% 
    %avs2yuv% %avsFile% -raw -o .\avsOut\%video%_%%v_synth_avs.yuv 
    (for %%r in (%rates%) do (
    @echo. 2> %avsFile% 
    @echo LoadPlugin("%RawSource26%") >> %avsFile% 
    @echo Crop(RawSource(".\renderOut\%video%_%%v_%%r_synth.yuv", %width%, %height%, "i420"), %cropLeft%, %cropTop%, %cropRight%, %cropBottom%) >> %avsFile% 
    %avs2yuv% %avsFile% -raw -o .\avsOut\%video%_%%v_%%r_synth_avs.yuv 
)))) 

REM del %avsFile% 

Meine Eingabeaufforderung:

C:\SAFAS\folder02>avs.bat 

C:\SAFAS\folder02>REM @echo off 

C:\SAFAS\folder02>set RawSource26=C:\_rawsource26\RawSource26.dll 

C:\SAFAS\folder02>set avsFile=.\temporary.avs 

C:\SAFAS\folder02>set avs2yuv=C:\_avs2yuv\avs2yuv.exe 

C:\SAFAS\folder02>set video=balloons 

C:\SAFAS\folder02>set views=1 2 3 4 5 

C:\SAFAS\folder02>set rates=1Mbps 2Mbps 3Mbps 4Mbps 5Mbps 

C:\SAFAS\folder02>set width=1024 

C:\SAFAS\folder02>set height=768 

C:\SAFAS\folder02>set cropLeft=72 

C:\SAFAS\folder02>set cropTop=0 

C:\SAFAS\folder02>set cropRight=0 

C:\SAFAS\folder02>set cropBottom=0 
72 was unexpected at this time. 
C:\SAFAS\folder02> @echo Crop(RawSource(".\renderOut\balloons_%v_synth.yuv", 1024, 768, "i420"), 72, 0, 0, 0) >> .\temporary.avs 
C:\SAFAS\folder02> 

Antwort

2

Die ) in Ihren Schleifen, die nicht wirklich ein "close", sondern Teil des echo es zu „entkommen muß, sind "- Ersetzen Sie dann mit ^) andernfalls Batch nimmt eine Unescaped - ) als close of block

+0

OK. Es funktionierte. Würden die öffnenden Klammern '^ (', die nicht als "offen" gedacht sind, eine gute Übung sein? – engn

+0

Entweichende schließende Klammern, die nicht als Teil des Befehls in meinem Stapel gemeint sind, lösten mein Problem. Auch öffnende runde Klammern, die sind Nicht Teil eines Befehls hat nichts kaputt gemacht und bedeutet, dass sie nicht Teil eines Befehls sind. Ich würde sagen, dass das Öffnen von Klammern eine gute Übung ist. Danke. – engn

+0

Entweichende öffnende Klammern wie '^ (' wird nicht benötigt, aber auch nicht Es geht also nicht um gute oder schlechte Praxis, sondern um persönlichen Geschmack. – aschipfl

Verwandte Themen