Windows 批处理:使用用户输入作为命令参数

Windows Batch: using user input as command argument

我最近发现 youtube-dl,我想在 youtube-dl 可执行文件的文件夹中创建一个批处理文件,该文件要求 url 并在 url

youtube-dl --extract-audio --audio-format mp3 -i -o songs\%(title)s.%(ext)s <video URL>

命令,它将视频作为 mp3 文件保存在与可执行文件相同的文件路径中的 \songs\ 文件夹中。如果我将命令复制粘贴到命令提示符中并将 <video url> 替换为实际的 url,则该命令工作正常,但是当我尝试将其放入批处理文件时(例如使用 set var1="")它在命令中使用变量的名称 (youtube-dl --extract-audio --audio-format mp3 -i -o songs\%(title)s.%(ext)s var1)。

我找到了this,这似乎是我要找的东西,但没有任何意义。

将命令复制到批处理文件时,您需要将 % 替换为 %%,以便正确解释 -o 选项的输出模板参数(即作为字符串 %(title)s.%(ext)s)。

如果您希望系统提示您输入 link,批处理文件可能如下所示:

set /p var1=  "Enter youtube link: "
youtube-dl --extract-audio --audio-format mp3 -i -o songs\%%(title)s.%%(ext)s %var1%

或者,只需在调用脚本 (set var1=youtube-link) 之前或在脚本本身中设置 var1