0

我有一个下载YouTube视频的批处理文件,如01-title1.m4a,02-title2.m4a等。我无法让视频编号n正常工作。如果它是单个数字的数字,我想在前面追加一个零,但我无法让它工作。批量:IF和延迟扩展

如果我更改FORIF线IF %n%==%n:~0,1% SET n=0!n!,它的工作,但随后只n初始值在比较时使用。然而,当我在IF之前echo !n!==!n:~0,1!时,我得到1==1,2==2如预期的那样。

:: Enter YouTube link including https, or just the video ID 
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET url_list= 
:loop 
SET url= 
SET /P url="Enter URL: " 
SET url="%url%" 
IF %url%=="" GOTO endloop 
IF %url%=="%url:~1,11%" (SET url=%url:~1,11%) ELSE SET url=%url:~33,11% 
SET url_list=%url_list% %url% 
GOTO loop 
:endloop 
SET url_list=%url_list:~1% 
SET /P n="Enter n: " 
IF [%n%] == [] SET n=1 
FOR %%u IN (%url_list%) DO (
    IF !n!==!n:~0,1! SET n=0!n! 
    youtube-dl --output "D:\Users\Joakim\Downloads\!n!-%%(title)s.%%(ext)s" --extract-audio --format 18 "https://www.youtube.com/watch?v=%%u" 
    SET /A n+=1 
) 
+0

问题在于,您将'n'设置为八进制数,方法是将其前置零。你不能添加1到08和09.只要做一个子字符串。 – Squashman

回答

1
.... 
set /a zn=100+n 
youtube-dl --output "D:\Users\Joakim\Downloads\!zn:~-2!-%%(title)s.%%(ext)s" --extract-audio --format 18 "https://www.youtube.com/watch?v=%%u" 
.... 

set /a使用运行时它的参数来设置它的目标变量值,因此zn被设置为n 100的运行时值。然后使用youtube-dl行中zn的最后2个字符。