Windows下youtube-dl的%(title)s.%(ext)s模板与set /p兼容问题求助
解决Windows批处理中youtube-dl输出文件名无法获取视频标题的问题
这个问题太常见了!在Windows CMD的批处理脚本里,百分号%是用来引用环境变量的特殊符号,所以你写的%(title)s.%(ext)s会被CMD先一步解析——它把%(title)s.当成了一个不存在的环境变量,解析后就只剩下(ext)s,最后加上下载的视频扩展名就变成了(ext)s.webm。
正确的解决方案
把输出模板里的每个单个百分号%改成两个百分号%%,这样CMD就会把它当作字面意义的%传递给youtube-dl,让youtube-dl正常识别标题和扩展名的占位符。修改后的批处理命令如下:
set /p ytlink="Enter the link of Youtube Video:- " youtube-dl -f "bestvideo[height<=1080]+bestaudio/best[height<=1080]" -o "D:\Videos\%%(title)s.%%(ext)s" %ytlink% pause
原理说明
在Windows批处理脚本中,要输出一个普通的%字符,必须用%%进行转义。这是CMD的语法规则:单个%会被解析为变量引用,而两个%则会被还原成一个%传递给后续的程序(这里就是youtube-dl)。这样youtube-dl就能正确识别%(title)s和%(ext)s,分别替换成视频标题和对应的文件扩展名了。
内容的提问来源于stack exchange,提问作者user3515562
相关产品推荐
相关产品推荐

