2013-02-19 44 views
0

即时通讯尝试创建批处理脚本来创建多个m3u8清单文件。 这里是什么即时尝试做批处理脚本创建多个m3u8清单文件

for (int i= 0; i < numberOfFiles; i++) 
{ 
    write preset lines to file. 
    for (int x = i x < i+10; x++) 
    { 
     write string + x in line to file 
    } 
    write end of file line to file 
} 

这是我到目前为止有一些伪代码。我有内循环问题。我如何使它从x运行到x + 10?

@echo on 

setlocal enabledelayedexpansion 

set x=0 

for /L %%x IN (0,1,5) do (
set file="index%%x.m3u8" 

@echo #EXTM3U>>!file! 
@echo #EXT-X-TARGETDURATION:10>>!file! 
@echo #EXT-X-VERSION:3>>!file! 
@echo #EXT-X-MEDIA-SEQUENCE:0>>!file! 
@echo #EXT-X-PLAYLIST-TYPE:VOD>>!file! 

set n=%x% 
for /L %%n IN (n, 1, %x%+10) do (
    @echo #EXTINF:10.00000,>>!file! 
    @echo fileSequence!n!.ts>>!file! 

) 

@echo #EXT-X-ENDLIST>>!file! 

) 

回答

0

你似乎混淆了环境变量与循环变量。这两者没有任何关系。

试试你的脚本的以下修改:

@echo on 

setlocal enabledelayedexpansion 

set x=0 

for /L %%x IN (0,1,5) do (
set file="index%%x.m3u8" 

@echo #EXTM3U>>!file! 
@echo #EXT-X-TARGETDURATION:10>>!file! 
@echo #EXT-X-VERSION:3>>!file! 
@echo #EXT-X-MEDIA-SEQUENCE:0>>!file! 
@echo #EXT-X-PLAYLIST-TYPE:VOD>>!file! 

set /a n=%%x+10 
for /L %%n IN (%%x, 1, !n!) do (
    @echo #EXTINF:10.00000,>>!file! 
    @echo fileSequence%%n.ts>>!file! 

) 

@echo #EXT-X-ENDLIST>>!file! 

) 

我不知道你为什么在一开始设定的回声,然后抑制个人echo S,但你可以通过简化脚本位将抑制和重定向应用于块而不是单个命令。特别是,在主循环的系列echo小号可以被重写如下:

@(
    echo #EXTM3U 
    echo #EXT-X-TARGETDURATION:10 
    echo #EXT-X-VERSION:3 
    echo #EXT-X-MEDIA-SEQUENCE:0 
    echo #EXT-X-PLAYLIST-TYPE:VOD 
)>>!file! 

内环的echo小号有可能转化为以类似的方式的块。当然,块内部的缩进是可选的。

+0

感谢您的修改工作。我只是回应,看看发生了什么。现在把它关掉了。 – 2013-02-19 22:14:09