我想将 URL 传送到 mplayer。
但不知道如何用双引号封装第一个输出(否则 mplayer 会出错)
这是错误的
youtube-dl.exe -g http://www.youtube.com/watch?v=sNPVt3cMkT0 | mplayer
相关的?
https://stackoverflow.com/questions/14952295/set-output-of-a-command-as-a-variable-with-pipes
另一个选项是从临时文件写入/读取。
答案1
您不想将结果通过管道传输到 mplayer,而是希望将结果作为参数提供,如下所示:
for /f "delims=" %A in ('youtube-dl.exe -g "http://www.youtube.com/watch?v=sNPVt3cMkT0"') do @mplayer "%%A"
如果在批处理文件中使用,则将所有百分比加倍,这样就%A
变成%%A
。
答案2
我在 Google 上搜索了一份mplayer
手册页;据我所知,它接受 URI 作为参数。正如我在评论中提到的,您需要引用 YouTube URI。您还需要引用命令替换,这样 shell 就不会尝试扩展那文件名也是如此。您需要类似这样的内容:
mplayer "$(youtube-dl --get-url 'https://www.youtube.com/watch?v=sNPVt3cMkT0')"
(--get-url
相当于-g
;我为了让那些不熟悉的人更清楚而对其进行了更改youtube-dl
。)