You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Windows批处理按2:1/3:1顺序合并两个VLC播放列表

解决VLC播放列表按指定交替规则合并两个文件夹视频的问题

我明白你的需求啦——两个存着随机命名视频的文件夹,要生成一个VLC播放列表,按比如AAB AAB(文件夹1取2个、文件夹2取2个循环)或者AAAB AAAB(文件夹1取3个、文件夹2取1个循环)的顺序合并。下面我给你写个实用的Windows批处理脚本,一步步实现这个需求:

核心思路

  1. 先分别生成两个文件夹的视频文件列表(临时文件),用你提到的dir命令但优化下只取文件;
  2. 按指定的交替规则,从两个列表里逐行读取文件名,拼上文件夹路径后写入最终的VLC播放列表;
  3. 处理边界情况:如果其中一个文件夹的视频先读完,自动把另一个文件夹的剩余视频全部追加到列表末尾。

批处理脚本示例(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:53:16