CMD 中具有 IF 状态的嵌套循环

Nested Loops with IF Statment in CMD

提问人:Wahid Anwari 提问时间:3/4/2023 最后编辑:CompoWahid Anwari 更新时间:3/7/2023 访问量:52

问:

我正在尝试使用命令提示符下载文件。 这个用户@user4317867帮助我编写循环命令。该命令只用了一个季节的流程,命令是:

for /L %i in (1,1,24) do curl -O "the URL of the file to download"

现在我想使用该命令下载电影系列,但是当它以一季结束时,例如第 1 季,URL 为:

for /L %i in (1,1,24) do curl -O "http://cdn3.movie.af/drive1/Movie/Series/Grimm-S2/live/Grimm-S01E01-720p-BluRay-Movie.af.mp4"

现在,当第一季完成时,下一季的 URL 与上一季的 URL 相同,但有两个区别,即季号和集号。例如:"http://cdn3.movie.af/drive1/Movie/Series/Grimm-S2/live/Grimm-S02E01-720p-BluRay-Movie.af.mp4"

  • 季节 : 剧集S01E01-E24
  • 季节 : 剧集S02E01-E25
  • 季节 : 剧集S03E01-E30

任何建议都是值得赞赏的。

for /L %i in (1,1,24) do curl -O "the URL of the file to download".
for /L %i in (1,1,24) do curl -O "http://cdn3.movie.af/drive1/Movie/Series/Grimm-S2/live/Grimm-S01E01-720p-BluRay-Movie.af.mp4"
for-loop if-statement cmd 嵌套 批处理文件

评论


答:

0赞 Compo 3/7/2023 #1

虽然您尚未使用批处理文件标记,但这里有一个基本示例,说明如何使用标记执行此操作:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion

Set "CURL=%SystemRoot%\System32\curl.exe"
Set "URI=http://cdn3.movie.af/drive1/Movie/Series/Grimm-S2/live/Grimm-%%%J-720p-BluRay-Movie.af.mp4"

For /L %%G In (101,1,103) Do (
    Set "$=%%G"
    SetLocal EnableDelayedExpansion
    For %%H In (!$:~-2!) Do (
        EndLocal
        If %%H Equ 1 (
            For /L %%I In (101,1,124) Do (
                Set "_=%%I"
                SetLocal EnableDelayedExpansion
                For %%J In (S%%HE!_:~-2!) Do (
                    EndLocal
                    %CURL% -O "%URI%"
                )
            )
        ) Else If %%H Equ 2 (
            For /L %%I In (101,1,125) Do (
                Set "_=%%I"
                SetLocal EnableDelayedExpansion
                For %%J In (S%%HE!_:~-2!) Do (
                    EndLocal
                    %CURL% -O "%URI%"
                )
            )
        ) Else If %%H Equ 3 (
            For /L %%I In (101,1,130) Do (
                Set "_=%%I"
                SetLocal EnableDelayedExpansion
                For %%J In (S%%HE!_:~-2!) Do (
                    EndLocal
                    %CURL% -O "%URI%"
                )
            )
        )
    )
)

由于您自己没有尝试过这项任务,因此我不会包括对正在发生的事情等的解释。如果您想了解更多信息,您应该打开命令提示符窗口,并为所使用的每个命令使用帮助选项。/?