我正在尝试访问一堆网址(超过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'部分。有人可以帮忙吗?
答案 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>