Batch file 在批处理文件中循环一组URL
我试图访问一堆URL(超过1000个)。以下是URL的外观Batch file 在批处理文件中循环一组URL,batch-file,url,for-loop,curl,Batch File,Url,For Loop,Curl,我试图访问一堆URL(超过1000个)。以下是URL的外观 url = "http://***/00001" url = "http://***/00002" ... url = "http://***/01000" 我想写一个批处理文件来自动访问这些URL。我学习了一点如何编写批处理文件并在命令行中运行它。像这样的东西 ECHO OFF FOR /L %i IN (1,1,1000) DO ( curl -XGET "http://***/0000%i" ECHO fi
url = "http://***/00001"
url = "http://***/00002"
...
url = "http://***/01000"
我想写一个批处理文件来自动访问这些URL。我学习了一点如何编写批处理文件并在命令行中运行它。像这样的东西
ECHO OFF
FOR /L %i IN (1,1,1000) DO (
curl -XGET "http://***/0000%i"
ECHO finish %i
)
但它不起作用,我也不知道如何在循环中更改url中的“00001”部分。有人能帮忙吗?在批处理中,元变量(
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
)
将10000000添加到%%i
可确保url
中的值为10000001..10001000,以便可以访问最后5位数字!网址:~-5代码>
关键点是需要调用delayedexpansion
,以允许访问url
的变化值,并且该值必须位于普通环境变量中,以允许子字符串。元变量不能直接子字符串化。当然,url
可以直接分配给%%i
的值,如果%%i
的值从10000001到10001000不等,但从代码维护的角度来看,这并不明显。关于@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!"
)
或者以另一种方式解释,将示例中的%i
的所有实例替换为%i
。在命令行上,正确的表单是%i
,但是当从批处理文件内部运行时,正确的表单是%i
@Magoo,它工作得很好。但我还有一个问题,我的代码“0000%%I”似乎会给出“000010”。然而,我想要的实际上是“00010”。我该如何解决这个问题?Thanks@Magoo,谢谢你的回复。但它似乎不起作用。它试图访问“http://***!url:~-5!”,而不是像“http://***/00012!”这样的东西,对我来说效果非常好。我怀疑您忽略了包含setlocalenabledelayedexpansion
行,该行调用delayedexpansion
模式,该模式允许!瓦尔代码>窗体以访问当前变量值。