如何用Windows批处理按2:1/3:1顺序合并两个VLC播放列表
解决VLC播放列表按指定交替规则合并两个文件夹视频的问题
我明白你的需求啦——两个存着随机命名视频的文件夹,要生成一个VLC播放列表,按比如AAB AAB(文件夹1取2个、文件夹2取2个循环)或者AAAB AAAB(文件夹1取3个、文件夹2取1个循环)的顺序合并。下面我给你写个实用的Windows批处理脚本,一步步实现这个需求:
核心思路
- 先分别生成两个文件夹的视频文件列表(临时文件),用你提到的
dir命令但优化下只取文件; - 按指定的交替规则,从两个列表里逐行读取文件名,拼上文件夹路径后写入最终的VLC播放列表;
- 处理边界情况:如果其中一个文件夹的视频先读完,自动把另一个文件夹的剩余视频全部追加到列表末尾。
批处理脚本示例(AAB模式)
把下面的代码保存成merge_playlist.bat,然后根据你的实际情况修改文件夹路径:
@echo off setlocal enabledelayedexpansion :: -------------------------- 配置参数 -------------------------- set "folder1=.\Folder1" :: 第一个视频文件夹路径(相对/绝对都可以) set "folder2=.\Folder2" :: 第二个视频文件夹路径 set "output=merged_playlist.vlc" :: 最终生成的播放列表文件名 set "take1=2" :: 每次从Folder1取几个文件(AAB模式设为2) set "take2=2" :: 每次从Folder2取几个文件(AAB模式设为2) :: ------------------------------------------------------------- :: 生成两个文件夹的文件列表(仅文件,按生成时间排序,可改/o:n按名称排序) dir "%folder1%" /a-d /b /-p /o:gen > list1.txt dir "%folder2%" /a-d /b /-p /o:gen > list2.txt :: 初始化计数器和临时变量 set "count1=0" set "count2=0" set "current_line=" :: 创建空的输出播放列表 type nul > "%output%" :: 主循环:按规则交替读取文件列表 :loop :: 读取Folder1的文件,直到取够指定数量或列表为空 if !count1! lss %take1% ( set /p current_line=<list1.txt if defined current_line ( echo !folder1!\!current_line!>>"%output%" :: 移除已读取的第一行 more +1 list1.txt > temp1.txt move /y temp1.txt list1.txt >nul set /a count1+=1 goto loop ) else ( :: Folder1已读完,标记计数器跳过 set "count1=999" ) ) :: 读取Folder2的文件,直到取够指定数量或列表为空 if !count2! lss %take2% ( set /p current_line=<list2.txt if defined current_line ( echo !folder2!\!current_line!>>"%output%" :: 移除已读取的第一行 more +1 list2.txt > temp2.txt move /y temp2.txt list2.txt >nul set /a count2+=1 goto loop ) else ( :: Folder2已读完,标记计数器跳过 set "count2=999" ) ) :: 重置计数器,准备下一轮交替 set "count1=0" set "count2=0" :: 检查是否还有剩余文件未处理 findstr . list1.txt >nul || findstr . list2.txt >nul if errorlevel 1 goto cleanup goto loop :cleanup :: 清理临时文件 del list1.txt list2.txt temp1.txt temp2.txt >nul 2>&1 endlocal echo ✅ 播放列表生成完成:%output%
修改为AAAB模式
只需要修改脚本里的配置参数:
set "take1=3" :: 每次从Folder1取3个文件 set "take2=1" :: 每次从Folder2取1个文件
关键细节说明
- 排序规则:脚本里用
/o:gen按文件生成时间排序,如果想按文件名排序,改成/o:n即可; - 路径处理:如果文件夹是绝对路径(比如
C:\MyVideos\Folder1),直接替换配置里的路径就行,脚本会自动处理带空格的路径; - 临时文件:脚本运行中会生成
list1.txt、list2.txt等临时文件,运行结束后会自动删除; - VLC播放列表格式:
.vlc文件本质就是每行一个视频文件的路径,所以直接写入路径就能被VLC识别。
内容的提问来源于stack exchange,提问作者Jonjo Jefferson
相关产品推荐
相关产品推荐

