将 youtube-dl 命令输出提取到变量

extracting youtube-dl command output to variable

所以在过去的几天里,我一直在尝试提取 youtube dl 命令的值,不幸的是没有成功,我可能做错了什么这是我的代码:

youtube-dl --get-filename -o "Download/%%(title)s.mp3" https://www.youtube.com/watch?v=dQw4w9WgXcQ

此代码 returns Download\Rick Astley - Never Gonna Give You Up (Video).mp3 我需要将此输出放入一个变量中,我已经尝试过 for /f 但没有成功,它给出了这个错误:

WARNING: Falling back on generic information extractor. ERROR: Unsupported URL: https://www.youtube.com/

编辑:这是我尝试过的

for /f "delims=" %%a in ('youtube-dl --get-filename -o "Download/%%(title)s.mp3" https://www.youtube.com/watch?v=dQw4w9WgXcQ') do set "myvar=%%a" 
echo %myvar%

你很幸运,我目前正在维修的电脑上有一个 youtube 可执行文件的副本!

因此我测试了评论中的内容,这是结果!

你的例子,没有引号 URL 并且没有转义字符:

@For /F Delims^=^ EOL^= %%G In ('youtube-dl --get-filename -o "Download/%%(title)s.mp3" https://www.youtube.com/watch?v=dQw4w9WgXcQ') Do @Echo "%%~G"

Returns:

WARNING: Falling back on generic information extractor.
ERROR: Unsupported URL: https://www.youtube.com/

我说,"Please try either doublequoting your URL":

@For /F Delims^=^ EOL^= %%G In ('youtube-dl --get-filename -o "Download/%%(title)s.mp3" "https://www.youtube.com/watch?v=dQw4w9WgXcQ"') Do @Echo "%%~G"

这个returns:

"Download\Rick Astley - Never Gonna Give You Up (Video).mp3"

并且,"or escaping the = character with a caret, ^"

@For /F Delims^=^ EOL^= %%G In ('youtube-dl --get-filename -o "Download\%%(title)s.mp3" https://www.youtube.com/watch?v^=dQw4w9WgXcQ') Do @Echo "%%~G"

Returns:

"Download\Rick Astley - Never Gonna Give You Up (Video).mp3"

对于你提出的问题,我的建议似乎是完全正确的。

顺便说一句,在最后一个例子中,因为 Windows 上的路径分隔符是 \ 而不是 /,我更改了 Download/Download\