循环遍历批处理文件中的一堆网址

时间:2016-11-18 22:17:45

标签: batch-file url for-loop curl

我正在尝试访问一堆网址(超过1000个)。以下是网址的外观

url = "http://***/00001"
url = "http://***/00002"
...
url = "http://***/01000"

我想写一个批处理文件来自动访问这些网址。我学到了一些关于如何编写批处理文件并在命令行中运行它的知识。看起来像这样的东西

ECHO OFF

FOR /L %i IN (1,1,1000) DO (

    curl -XGET "http://***/0000%i"

    ECHO finish %i
)

但它不起作用,我无法弄清楚如何更改循环中url中的'00001'部分。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

关于@Magoo的答案的相同想法,但正在处理字符串:

@echo off
setlocal enabledelayedexpansion

set "$BaseUrl=http://****/"

for /l %%a in (1,1,1000) do (
  set "$Number=0000%%a"
  curl -XGET "%$BaseUrl%!$Number:~-5!"
  )

答案 1 :(得分:0)

在批处理中,元变量 {在这种情况下为%)的i需要加倍。只需将每个%

%i加倍

如果您需要一个5位数的变量,那么

@ECHO OFF
setlocal enabledelayedexpansion

FOR /L %%i IN (1,1,1000) DO (
  set /a url=10000000+%%i
  curl -XGET "http://***/!url:~-5!"

  ECHO finish %%i
)

%%i添加10000000可确保url中的值为10000001..10001000,因此!url:~-5!可以访问最后5位数。

关键点是需要调用delayedexpansion以允许访问url的更改值,并且该值必须位于普通环境变量中才能允许子串。元变量不能直接进入子线。当然,如果url从10000001变为10001000,%%i可以直接分配给%%i的值,但从代码维护的角度来看,这并不明显。< / p>