批处理脚本创建多个m3u8清单文件

时间:2013-02-19 19:39:47

标签: windows batch-file

我试图创建一个批处理脚本来创建多个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
}

这是我到目前为止所拥有的。我有内部for循环的问题。如何让它从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!

)

1 个答案:

答案 0 :(得分: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可以以类似的方式转换为块。当然,块内的缩进是可选的。