Batch:IF和延时扩容
Batch: IF and delayed expansion
我有一个批处理文件,用于下载 youtube 视频 01-title1.m4a
、02-title2.m4a
等。不过,我无法让视频编号 n
正常工作。如果它是一位数字,我想在前面附加一个零,但我无法让它工作。
如果我将 FOR
中的 IF
行更改为 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
)
....
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
使用其参数的 运行-time 值来设置其目标变量,因此 zn
设置为 运行-时间值n
+100。然后在 youtube-dl
行中使用 zn
的最后 2 个字符。
我有一个批处理文件,用于下载 youtube 视频 01-title1.m4a
、02-title2.m4a
等。不过,我无法让视频编号 n
正常工作。如果它是一位数字,我想在前面附加一个零,但我无法让它工作。
如果我将 FOR
中的 IF
行更改为 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
)
....
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
使用其参数的 运行-time 值来设置其目标变量,因此 zn
设置为 运行-时间值n
+100。然后在 youtube-dl
行中使用 zn
的最后 2 个字符。