3 votes

Boucle sur un tas d'URL dans un fichier batch

Je tente d'accéder à une multitude d'URL (plus de 1000). Voici à quoi ressemblent les URL

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

J'aimerais écrire un fichier batch pour accéder à ces URL automatiquement. J'ai appris un peu comment écrire un fichier batch et l'exécuter en ligne de commande. Ça ressemblerait à quelque chose comme ça

ECHO OFF

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

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

    ECHO finish %i
)

Mais cela ne fonctionne pas et je ne parviens pas à comprendre comment changer la partie '00001' dans l'URL dans la boucle. Quelqu'un peut-il aider?

1voto

SachaDee Points 8113

Sur la même idée de la réponse de @Magoo mais en travaillant sur la chaîne :

@echo off
setlocal enabledelayedexpansion

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

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

0voto

Magoo Points 22274

Au sein d'un lot, le % pour la méta-variable (i dans ce cas) doit être doublé. Il suffit de doubler le % pour chaque %i


Si vous avez besoin d'une variable à 5 chiffres, alors

@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
)

Ajouter 10000000 à %%i garantit que la valeur dans url est 10000001..10001000 afin que les 5 derniers chiffres puissent être accédés par !url:~-5!.

Les points clés sont que delayedexpansion doit être invoqué pour permettre l'accès à la valeur changeante de url et que la valeur doit être dans une variable d'environnement ordinaire pour permettre un sous-chaînage. Les méta-variables ne peuvent pas être directement sous-châinées. Naturellement, url pourrait être directement attribué à la valeur de %%i si %%i varie de 10000001 à 10001000, mais cela n'est pas aussi évident d'un point de vue de la maintenance du code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X