IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Assigner résultat commande variable


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut Assigner résultat commande variable
    Bonjour,

    je sais que ce type de question est récurrent mais je m'embrouille un peu avec le DOS batch parce que j'ai l'habitude du shell bash

    J'ai une commande du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=*" %%a in ('commande1 fichier.txt ^| commande2 ^| commande3') do echo %%a
    je voudrais pouvoir, à chaque itération de la boucle :
    - évidemment récupérer %%a, résultat des 3 commandes ci-dessus
    - mais aussi la ligne originale de fichier.txt qui vient d'être traitée

    par exemple si au cours de la boucle la ligne "Bonjour" de fichier txt est transformée par les commandes en "Coucou", je voudrais pouvoir afficher "Bonjour" et Coucou, et ainsi de suite jusqu'à la fin du parcours de fichier.txt, à chaque fois conserver les deux valeurs.

    Quelle est la meilleure façon de procéder ? avec un set ?

    Merci

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    essaye une chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For /f "Tokens=*" %%a In ('command1 fichier') Do For /f "Tokens=*" %%b In ('command2 %%a ^|command3') Do (
    
    Echo %%a %%b
    )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    Coucou,

    merci pour cette piste. Néanmoins il semblerait que ça ne fonctionne pas, j'ai tenté diverses combinaisons en vain. Voici un peu plus de détails :

    j'ai un fichier a.txt dans lequel il y a des chemins de fichiers

    a.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\abcd.exe
    C:\windows\system\x.txt
    C:\program files\xcde.sys
    je souhaite garder dans chaque tour de boucle:
    - le chemin complet
    - le nom du fichier dépourvu de son chemin
    et afficher tout ça dans coucou.txt

    Par exemple à la première passe, il devrait afficher dans coucou.txt
    abcd.exe C:\abcd.exe

    Voilà la commande que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=*" %%a in ('type a.txt ^| grep.exe -o "\\[^\]*$" ^| sed.exe "s/\\//g"') do For /f "Tokens=*" %%b In (a.txt) do echo %%a && echo  %%b >> coucou.txt
    là, il repart sur toute la liste quand il a fini la boucle j'ai l'impression.

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Bonjour,

    pas besoin d'utilitaire tiers,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For /f "Tokens=*" %%a In (a.txt) Do (
     Echo %%~nxa %%a >>coucou.txt
    )

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Par défaut
    ok effectivement il n'y avait pas besoin de tiers pour découper ces variables, en revanche j'en ai eu besoin préalablement pour cerner les chaînes de chemins de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep.exe -o [a-zA-Z]:\\.*\.[a-zA-Z]\{3\} | sed "s/$/\r/g" | sort | uniq.Exe -i
    donc par exemple pour isoler C:\windows\abcd.exe ou c:\coucou.sys, etc dans un fichier

    uniq permet de supprimer les doublons après un tri, je n'ai pas vu d'équivalent sous windows. C'est sur que ce serait plus léger sans tout ça. Ca t'inspire des solutions natives ?

    Merci encore

Discussions similaires

  1. Résultat commande curl dans une variable
    Par Tonii dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 29/07/2014, 14h56
  2. Réponses: 4
    Dernier message: 15/01/2008, 15h24
  3. Commandes variables d'environnement
    Par pëch21 dans le forum Windows XP
    Réponses: 7
    Dernier message: 21/12/2007, 11h31
  4. Réponses: 11
    Dernier message: 30/08/2007, 09h08
  5. Resultat commande => variable
    Par Bicnic dans le forum Linux
    Réponses: 3
    Dernier message: 10/07/2004, 12h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo