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

如何在Batch脚本中保存Livestreamer输入作为下次可选选项?

解决你的Batch脚本保存历史主播的问题

看起来你已经搭好了不错的雏形!我帮你修正脚本里的小问题,同时加上避免重复添加主播名的功能,让历史列表更整洁好用。

修正后的完整脚本

@ECHO off
SETLOCAL EnableExtensions EnableDelayedExpansion

:: 替换成你实际的文件路径,注意不要用[...]占位符
set "historyFile=C:\Users\YourActualUsername\savedstreams.txt"

:start
title twitchings
color 0a
echo Select [#] or enter Stream name
echo.
echo 1. Non-Twitch (enter custom URL)

:: 初始化历史主播的选项编号,从2开始
set /A optionNum=2

:: 读取历史文件并生成可选选项
if exist "%historyFile%" (
    for /F "usebackq delims=" %%a in ("%historyFile%") do (
        echo !optionNum!. %%a
        set /A optionNum += 1
    )
)

set /p select=Enter your choice: 

:: 判断输入是数字选项还是新主播名
set "varCheck="
for /F "delims=0123456789" %%c in ("%select%") do set "varCheck=%%c"
if not defined varCheck (
    goto :isnumber
) else (
    goto :isstream
)

:isnumber
:: 处理数字选项逻辑
if %select% equ 1 (
    goto :TpyeInSource
) else if %select% geq 2 if %select% lss !optionNum! (
    :: 计算对应历史文件的行号(选项2对应第1行,以此类推)
    set /A lineIdx=%select% - 2
    set "stream="
    for /F "usebackq skip=%lineIdx% delims=" %%a in ("%historyFile%") do (
        set "stream=%%a"
        goto :launchStream
    )
) else (
    echo Invalid number choice!
    pause
    goto :start
)

:isstream
set "stream=%select%"
:: 检查主播名是否已存在,避免重复写入
set "exists=0"
if exist "%historyFile%" (
    for /F "usebackq delims=" %%a in ("%historyFile%") do (
        if /I "%%a" equ "!stream!" set "exists=1"
    )
)
if !exists! equ 0 (
    echo !stream! >> "%historyFile%"
)
goto :launchStream

:TpyeInSource
echo Enter custom stream URL:
set /p select2=? 
livestreamer "%select2%"
goto :end

:launchStream
echo Launching stream for: !stream!
livestreamer "http://twitch.tv/!stream!" 1080p60 || livestreamer "http://twitch.tv/!stream!" best

:end
@CHOICE /C:rqn /M "[R]etry, [Q]uit or [N]ew stream"
IF ERRORLEVEL 3 GOTO start
IF ERRORLEVEL 2 GOTO quit
IF ERRORLEVEL 1 GOTO launchStream

:quit
echo "Bye!"
@PAUSE
ENDLOCAL

关键改进说明

  • 重复项检测:新增逻辑判断,同一个主播名不会被重复写入历史文件
  • 清晰的选项编号:固定选项1为「Non-Twitch」,历史主播从选项2开始依次排列,逻辑更直观
  • 错误防护:对无效数字选项做了判断,避免脚本因输入错误崩溃
  • 变量作用域优化:用SETLOCAL和ENDLOCAL隔离脚本变量,不会影响系统全局环境

快速学习Batch脚本的途径

如果你想快速掌握这类知识,推荐这些方向:

  • 微软官方文档:搜索「Windows Batch Scripting Documentation」,里面有完整的语法参考和命令说明,是最权威的资料
  • 核心知识点优先:重点学习for循环、文件读写、变量延迟扩展(EnableDelayedExpansion)这些常用功能,你的脚本已经用到了延迟扩展,理解它的工作原理能帮你解决很多变量相关的问题
  • 小项目实战:从简单的小脚本练手(比如批量重命名文件、自动备份文件夹),边写边查问题,比单纯看文档进步更快

内容的提问来源于stack exchange,提问作者Sakuja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:11:10