2013-02-19 45 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