如何在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
相关产品推荐
相关产品推荐

