我想设置"var3=%(title)s.%(ext)s"
但是Windows继续进行口译
%(title)s.%(ext)s
如
(ext)s
代替
%(title)s.%(ext)
有没有一种方法可以在没有cmd解释的情况下以字面方式“设置”?
编辑有人想看整个剧本
cd C:\youtube-dl
youtube-dl -U
echo Remember to press enter only AFTER update is complete
pause
set /p "var1=Enter URL: " %=% pause
set "var2=%date:/=-%"
set /p var3=%(title)s.%(ext)s
youtube-dl "%var1%" -ci -o C:\Users\Admin\Desktop\Music\Download_dl\%var2%\%var3% -f best -x -- no-mtime --add-metadata --write-thumbnail
cd C:\Users\Admin\Desktop\Music\Download_dl\%var2%
del *.mp4
答案 0 :(得分:1)
在批处理文件中,%
具有特殊含义。在你的代码中
set "var3=%(title)s.%(ext)s"
^.........^
指示的百分号表示分隔名为(title)s.
的变量的名称。而且这个变量没有定义(我想你的输出),所以你得到的是
set "var3=(ext)s"
您需要逃避百分号才能获得所需的结果
set "var3=%%(title)s.%%(ext)s"
答案 1 :(得分:1)
要批量保留大多数特殊字符,请将它们括在引号中。这将防止大多数人丢失或转化为他们的特殊含义。但是,对于批处理文件中的%
,必须自行转义%%
。
@echo off
setlocal
cd C:\youtube-dl
youtube-dl -U
echo Remember to press enter only AFTER update is complete
pause
set /p "var1=Enter URL: " %=% pause
if defined var1 set "var1=%var1:"=%"
set "var2=%date:/=-%"
set "var3=%%(title)s.%%(ext)s"
youtube-dl "%var1%" -ci -o "C:\Users\Admin\Desktop\Music\Download_dl\%var2%\%var3%" -f best -x -- no-mtime --add-metadata --write-thumbnail
cd "C:\Users\Admin\Desktop\Music\Download_dl\%var2%"
del *.mp4
endlocal
更改