如何用双引号管道输出

如何用双引号管道输出

我想将 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。)

相关内容