批次:IF和延迟扩展

时间:2017-09-22 21:07:23

标签: windows batch-file if-statement delayedvariableexpansion

我有一个用于下载YouTube视频的批处理文件为01-title1.m4a02-title2.m4a等。但我无法让视频编号n正常工作。如果它是一个数字的数字我想在前面附加一个零,但我无法让它工作。

如果我将IF中的FOR行更改为IF %n%==%n:~0,1% SET n=0!n!,它确实有效,但在比较中仅使用n的初始值。然而,当我在echo !n!==!n:~0,1!之前IF时,我会按预期得到1==12==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
)

1 个答案:

答案 0 :(得分: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。然后使用zn行中youtube-dl的最后2个字符。

相关问题