Recuperer une liste pour l'executer en batch

Résolu
Vince -  
 Vince -
Bonjour,
voila j'ai un batch qui traite des url via Curl... mais bon la n'est pas le problème. Le truc c'est que ce bat fait environ 400 ligne execute 5 ligne par adresse IP.
Situation actuelle :
Il y a en tout 80 adresse IP qui sont toutes stockées dans un fichiers excel. Devant me dépecher pour monter un script fonctionnel j'ai entrée toute ces IP en dur dans mon batch (d'ou les 400 ligne ^^). Mais maintenant, j'aimerai crée un script plus dynamique...
Situation que je veux obtenir :
Je souhaiterai que par n'importe quelle méthode (pas forcement batch, j'ai pensé à du VBA par ex.) je puisse aller chercher ces adresse IP, et les balancer dans mon batch. pour ce faire, mon batch ne posséderai que les 5 ligne, avec une variable à la place de l'IP. En clair le batch sera exécuter 80 fois.

Comment faire pour justement arriver à ma 2ème situation ???

Merci de me répondre en esperant que mon post soit assez clair...
Configuration: Windows XP
Firefox 3.0.7

18 réponses

Résumé de la discussion

Le souci décrit concerne un script batch Windows qui traite des URL via curl et réutilise 80 adresses IP stockées dans un fichier Excel, nécessitant une exécution du batch 80 fois. Des solutions dynamisent le processus en chargeant les IP via un fichier CSV et en utilisant une boucle FOR /F avec tokens et delims pour alimenter le batch, évitant les données en dur. Par exemple, en ciblant le champ approprié d'un fichier CSV séparé par des virgules, on peut récupérer l'adresse IP avec tokens=2 ou tokens=1,2 selon le format. En pratique, la technique permettrait d'obtenir une exécution 80 fois sans réécrire le script, et certaines discussions évoquaient aussi la possibilité d'utiliser un fichier texte intermédiaire ou d'adapter le format.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. cs-bilou Messages postés 836 Statut Membre 164
     
    Bon alors si ton fichier ressemble a sa:
    ACDWX-WXC-1,192.168.4.32,0452016546144


    Tu peut mettre la commande:
    @echo off
    for /f "tokens=2 delims=," %%i in ('type classeur1.CSV') do (
    commande
    )


    Voila j'espère t'avoir aider.
    Bilou.
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Déjà dit dans le topic 15 :p
      0
      1. Vince > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Je voudrais pas tout casser mais je fais ce test :

        for /f "tokens=2 delims=," %%f in ('Book1.csv') do (
        echo %%f
        )
        pause


        et paf la resultat :


        C:\Users\Vince\Desktop>for /F "tokens=2 delims=," %f in ('Book1.csv') do (echo %
        f )
        
        C:\Users\Vince\Desktop>pause
        Appuyez sur une touche pour continuer...
        0
      2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > Vince
         
        Je ne sais, pas si c'est ça mais tu as mis des apostrophes autour du nom de fichier. Enlève les tout simplement.
        Sinon, si ça ne marche toujours pas, teste :
        for /f "tokens=1,2* delims=," %%f in (Book1.csv) do (
        echo %%f 
        echo %%g
        echo %%h
        )
        pause 
        
        0
  2. cs-bilou Messages postés 836 Statut Membre 164
     
    Haaaa mais il faut mettre type Book1.csv
    Donc sa fera:

    @echo off
    for /f "tokens=2 delims=," %%f in ('type Book1.csv') do (
    echo %%f
    )
    pause 


    Bilou.
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      ou tout simplement ne pas mettre d'apostrophes autour de Book1.csv.
      0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    C'est le bordel la convers lool.
    Regarde sur mon post 22, il y a un exemple de ce que tu veux faire avec tokens=1,2 par exemple.
    http://www.commentcamarche.net/forum/affich 11667037 recuperer une liste pour l executer en batch?#22
    1
    1. Vince
       
      ahah me disai bien avoir un token avec virgule ^^ mais je retrouvais pas le post (oui je sai je suis ridicule ^^") enfin je viens de test et sa marche merci pr tout les gens... euh plus cas trouver comment valider cette discu moi ^^

      aller GooD NighT everybody

      et merci encore un fois pr tout

      Vince
      0
  4. cs-bilou Messages postés 836 Statut Membre 164
     
    Si tu peut faire:
    @echo off
    for /f "tokens=1,2 delims=," %%i in ('type Book1.csv') do (
    echo %%i
    echo %%j
    )
    pause


    Bilou.
    1
    1. Vince
       
      Oui c'est bon mon prob est résolu et tester merci

      GN

      ++
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs-bilou Messages postés 836 Statut Membre 164
     
    Salut tu peut faire un fichier batch avec toute tes commande est un fichier txt.
    Avec les adresse ip.

    Bilou.
    0
  7. Vince
     
    Euh oui, c'est une idée...

    Donc cela donnerai un fichier txt:
    192.168.4.4
    192.168.45.8
    192.168.3.5

    Mais ensuite je revien au même vu que d'apres ce que j'ai compris tu me propose d'envoyer mes IP une à une, cela ne me crée plus que un batch de 80 ligne --". Yaurai pas un truc (genre boucle for en JAVA) qui irai me cherche une ligne (@IP), met à jour la variable, lance les 5 lignes,va chercher une ligne,met à jour la variable,...

    Sa serait possible sa ????
    0
  8. cs-bilou Messages postés 836 Statut Membre 164
     
    Ba si voila la commande.
    for /f %%i in ('type ip.txt') do (
    COMMANDE
    )
    Et a là place de mettre une ip tu met %%i
    J'espère que tu ma comprit.
    Sinon donne moi ton script ou ton msn en mp et je t'aide.

    Bilou.
    0
    1. Vince
       
      erf avait pas vu cette commande... --" tkt je sais me servir des variables en BATCH c'est pas très compliquer mais j'étais totalement passé à coté des boucle for en batch --"

      Donc je resume

      /f c'est pour qu'il prenne ligne par ligne
      type ip.txt c'est le nom de doc txt
      euh encore deux question si je peux me permettre... (oui je sais j'abuse ^^)

      1) ne puis-je pas mettre un fichier .xls dans la boucle au lieu du .txt ???

      2) Comment envoyer une liste d'un fichier .xls (genre de A1 à V1) dans un fichier .txt tu fais sa avec une macro ?
      ou bien c'est possible en BATCH ??? (car je dois automatiser au max...)

      merci de me repondre c'est cool grâce à toi j'ai eco un temps precieux ^^
      0
  9. cs-bilou Messages postés 836 Statut Membre 164
     
    Alors le commutateur /f veux juste dire que se qu'il y a dans les parenthèse est une commande (sinon il croit que c'est un fichier)
    Ensuite biensur tu peut mettre dans un fichier xls même tout ce que tu veux mais il faut que quand tu l'ouvre avec le bloc-note tu puisse voir tout les ip tout distinct, ce qui n'est pas le cas quand tu enregistre au format xlm avec Exel(dsl).

    Sinon je vais continuer a chercher pour t'aider un max.

    Sinon file moi ton xls je vais essayer quelque truc.

    Bilou.
    0
    1. Vince
       
      Ben en fait je vais plus clarifier la situation pour que tu comprennes mieux ^^

      Je dois gérer un parc de 80 WCX c'est des sorte d'accelerateur si tu vois ce que je veux dire, bref c'est pas importants je peux grâce à Curl obtenir un fichier .CSV avec tout les WXC de mon parc. Ce fichier contient le nom,l'IP et une tonne d'autre info avec comme séparateur des ",". Donc de la j'étais parti sur un solution de macro pour mettre en place (dé séparer les données) et crée un new .xls avec que la colone des IP. Mais peut-être que je peux directement utilisé ce .CSV.... (je n'avais même pas envisager cette solution --") et trouver un moyen pr qu'il ne me prenne que la deuxième donnée à savoir l'IP....

      Je continue aussi mes recherches merci de m'aider

      Vince
      0
  10. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Sinon, tu sauvegardes ton fichier excel en CSV. Comme ça tu pourras le parcourir avec une boucle for en batch.
    Si tu ne peux pas le convertir en CSV ou que cette solution ne te convient pas. Il faudra plutôt utiliser un autre langage de programmation implémentant des modules pour traiter le fichier excel. Je pense au perl par exemple.
    Cdlt
    0
    1. Vince
       
      Wahou je s'avais qui avais un soluce avec le CSV ^^

      mais donc si j'ai un truc du genre

      ACDWX-WXC-1,192.168.4.32,0452016546144

      comment je fais pr que dans ma boucle for il ne me prenne que 192.168.4.32 ???
      0
      1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847 > Vince
         
        Tu peux faire :
        for /f "tokens=2 delims=," %%f in (fichier.csv) do echo %%f
        

        Note : remplace %%f par %f si tu testes en ligne de commande ;-))
        0
  11. cs-bilou Messages postés 836 Statut Membre 164
     
    Il suffit de la sauvegarder en fichier txt tu peut tu sélectionne test(Dos) dans Type de fichier.

    Biloi.
    0
    1. Vince
       
      ahh... ya pas moyen de go prendre direct le .CSV (j'allais justement faire un test...) mais bon sa change pas le prob que sa me prend tout de même toute la ligne --" donc :

      Comment je fais pour n'avoir que l'IP

      Oui je sais je suis exigent ^^ nn sans dec merci de m'aider les gens :)
      0
  12. cs-bilou Messages postés 836 Statut Membre 164
     
    Sinon je vais essayer de trouver un truc de ouf pour tout séparer et que tu est juste les ip.
    Laisse moi un peu beaucoup te temps.
    Temps que je cherche une solution.

    Bilou.
    0
    1. Vince
       
      tkt je retourne au taf que demain 8:00 ^^
      0
    2. Vince
       
      au fait j'ai effectuer un test la... alr donc je peux balancer mon CSV... besoin de le transformer en txt... ^^
      le seul hic ben c'est ce que je disai plus haut faut que je n'ai que l'IP car la y me met tout de dedans ^^
      0
  13. cs-bilou Messages postés 836 Statut Membre 164
     
    Euhh juste comme sa tu peut me passer ton fichier exel stp.
    Ou sinon j'airais voulue savoir si tes ip sont l'un en dessous de l'autre ou tous coller sur la même ligne ?

    Bilou.
    0
  14. cs-bilou Messages postés 836 Statut Membre 164
     
    A ouaip dsl j'avais pas vue.
    En tout cas j'espère avoir aider vince.

    Bilou.
    0
  15. cs-bilou Messages postés 836 Statut Membre 164
     
    Tu met:
    @echo off
    for /f "tokens=2 delims=," %%f in ('Book1.csv') do (
    echo %%f
    )
    pause 

    Et voila.

    Bilou.
    0
    1. Vince
       
      aucun changement si ce n'est que le fichier .CSV s'ouvre... (sry oublier de preciser sa avant... --") et qui a que
      "Appuyer sur une touche pr continuer..." au cmd

      pourtant ait le mm code que vous comprend pas --"
      0
  16. Vince
     
    G_G les gens vos deux solutions joue impec... c'est tro la classe je viens de gagner 2 jours de taf en moins grâce à vous ^^ thx à tout les 2 vous avez vraiment été simpa de m'aider

    aller aller bonne nuit :P à vous merci bcp encore

    Vince (qui dès demain s'inscrit car y bcp de gens tro cool dans ce fofo ^^)

    ++
    0
  17. cs-bilou Messages postés 836 Statut Membre 164
     
    No problèm les forum sont fait pour sa.
    N'hésite pas a poster si tu a problème.

    PS :N'oublie pas de mettre en Résolue en haut a droite de ton premier post.
    Bilou.
    0
    1. Vince
       
      J'aurai bientot un projet quasi similaire... alr une last question. Je reprend le même exemple, comment je ferai dans le cas ou je devrai recup le nom du WXC et son IP, soit 2 champs...

      ->2 boucle for ?
      ou bien
      -> modif niveau tokeng (genre 1,2) avec deux variable déclarer ????
      0
  18. cs-bilou Messages postés 836 Statut Membre 164
     
    Je crompent pas très bien, il me faudrait un exemple.
    Tu c'est quoi je te laisse mon msn en mp quand tu tu créé un compte.
    Et tu me tien au courant.

    Bilou.
    0
    1. Vince
       
      c'est que je suis quasiment jamais sur MSN O_o
      encore moins au taf...

      mais image que ta ceci

      ARDES-WXC-1,192.168.45.5,051545465,TKEKDLSJKLS
      et que je veux mettre :
      ->ARDES-WXC-1 dans une variable %%nom
      ->192.168.45.5 dans une variable %%ip

      j'espere que tu comprendra mieux...

      j'y go la donc je re sur le fofo demain au pire...

      Good Night

      Vince
      0
  19. Vince
     
    euh juste je ferme ou le discussion (pr la valider ) je crois que je peux pas le faire que car mon premier post etait anonyme... (les autres aussi du reste ^^) ?
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Je m'en charge ;-)).
      Bonne nuit.
      0
      1. Vince > fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention  
         
        k merci
        0