2017-02-22 62 views
1

我的批处理文件如下,为给定的参数列表创建一个.avs文件,然后运行一个程序,该程序以.avs文件作为参数,并在for循环中多次执行此操作。我的windows批量说:“72在这个时候是意外的。”

但是当我运行我的批处理文件时,它会打印72 is unexpected at this time.,72是其中一个参数的值。 .avs文件不会被创建,程序也不会被执行。

我的批处理文件及其在REM @echo off命令提示符下的输出如下。

我的批处理文件:

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% 

我的命令提示符:

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> 

回答

2

您的循环,即实际上不是一个“关闭”,但部分echo ES需要被“逃脱内) “ - 然后用^)代替,否则批次需要非转义 - )作为close of block

+0

好的。有效。将转义开头括号'^(',这并不意味着“打开”,是一个好习惯吗? – engn

+0

转义的圆括号不意味着我的批处理命令的一部分解决了我的问题。不是一个命令的一部分没有破坏任何东西,并且表示它们不是命令的一部分,我会说转义开头的括号是一种很好的做法,谢谢 – engn

+0

逃脱像'^('这样的开括号,不会伤害任何,所以这不是一个好的或不好的练习问题,它更多是个人品味的问题...... – aschipfl

相关问题