我试图创建一个批处理脚本来创建多个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!
)
答案 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
可以以类似的方式转换为块。当然,块内的缩进是可选的。