Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批次:如果和延迟扩展_Windows_Batch File_If Statement_Delayedvariableexpansion - Fatal编程技术网

Windows 批次:如果和延迟扩展

Windows 批次:如果和延迟扩展,windows,batch-file,if-statement,delayedvariableexpansion,Windows,Batch File,If Statement,Delayedvariableexpansion,我有一个用于下载youtube视频的批处理文件,如01-title1.m4a,02-title2.m4a等。不过,我无法让视频编号n正常工作。如果它是一个单位数字,我想在前面加一个零,但我不能让它工作 如果我将的中的If行更改为If%n%=%n:~0,1%设置n=0!n,它确实起作用,但在比较中只使用n的初始值。然而当我做echo!n!==!n:~0,1就在IF之前,我得到了预期的1==1,2==2 :: Enter YouTube link including https, or just t

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

如果我将的
中的
If
行更改为
If%n%=%n:~0,1%设置n=0!n
,它确实起作用,但在比较中只使用
n
的初始值。然而当我做
echo!n!==!n:~0,1
就在
IF
之前,我得到了预期的
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
被设置为运行时值
n
+100。然后在
youtube dl
行中使用
zn
的最后两个字符。

问题是,您在
n
前面加了一个零,将其设置为八进制数。不能将1添加到08和09。只需做一个子串即可。
....
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"
....