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 :

[Batch Dos] probleme commande for /F


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut [Batch Dos] probleme commande for /F
    bonjour à tous j'ai un petit probleme avec la commande for /F

    j'ai 2 scripts et un fichier csv

    1er Scritp randomize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo Traitement de %1
    type mail1.txt  >  tmp/mailenv%1.txt
    echo Le nouveau mot de passe de %1 sera : variabledéjàdéfinie  >>  tmp/mailenv%1.txt
    type mail2.txt  >>  tmp/mailenv%1.txt
    
    echo blat c:\test\forum\tmp\mailenv%1.txt -t %2 -c %3 -s "Changement de mot de passe" >> envoi-mail-prev.cmd
    2eme Script l_randomize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @echo off > envoi-mail-prev.cmd
    for /F "tokens=1-3 delims=;" %%i in (listusers2.csv) do call randomize.bat %%i %%j %%k
    Fichier listusers2.csv
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    totoMAG01;toto1@tototo.fr;Directeur1@toto.fr
    totoMAG02;toto2@tototo.fr;Directeur2@toto.fr
    totoMAG03;toto3@tototo.fr;Directeur3@toto.fr
    totoMAG04;toto4@tototo.fr;Directeur4@toto.fr
    tataMAG01;riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr;Directeur1@toto.fr
    tataMAG02;riri2@toto.fr,fifi2@toto.fr,loulou2@toto.fr;Directeur2@toto.fr
    tataMAG03;riri3@toto.fr,fifi3@toto.fr,loulou3@toto.fr;Directeur3@toto.fr
    tataMAG04;riri4@toto.fr,fifi4@toto.fr,loulou4@toto.fr;Directeur4@toto.fr
    voici le resultat d'un user du type "tata"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blat c:\test\forum\tmp\mailenvtataMAG01.txt -t riri1@toto.fr -c fifi1@toto.fr -s "Changement de mot de passe"
    voici ce que je devrais/voudrais avoir pour un utilisateur du type "tata"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blat c:\test\forum\tmp\mailenvtataMAG01.txt -t riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr -c directeur1@toto.fr -s "Changement de mot de passe"
    pour un utilisateur de type "toto" il n'y a pas de probleme, mais pour un de type "tata" il y a probleme, ce que je ne comprend pas c'est que j'ai bien utilisé le delimiteur ; et il utilise le delimiteur , aussi ??

    Par avance merci.

    Dob.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dob2806
    et il utilise le delimiteur , aussi ??
    Non c'est le shell qui utilise la virgule comme séparateur de paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /F "tokens=1-3 delims=;" %%i in (listusers2.csv) do call randomize.bat %%i "%%j" %%k
    Il faut placer le second champs, %%J, entre guillemets.
    Fallait juste placer une commande echo %1 %2 %3 dans le batch randomize...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    bien vu j'obtiens bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blat c:\test\forum\tmp\mailenvtataMAG01.txt -t "riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr" -c Directeur1@toto.fr -s "Changement de mot de passe"
    mais le probleme qui se pose maintenant c'est que Blat ne va pas reconnaitre le destinataire car il fonctionne ainsi:

    blat -t mail1,mail2 et quand je met les guillemets il ne fonctionne pas.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dob2806
    mais le probleme qui se pose maintenant c'est que Blat ne va pas reconnaitre le destinataire car il fonctionne ainsi:

    Dans ce cas utilise une variable d'environnement, créée avant d'appeler le batch de création de mail, tu ne lui passes donc plus que 2 paramètres.
    qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /F "Tokens=*" %%I in ('Dir %1 /AD /B') do set MaVariable=%%I&call fichier.cmd"
    Dans le batch de création de mail, en lieu et place de %%2 tu indiques le nom de ta variable. Et enfin tu y supprimes cette variable.
    qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo blat c:\test\forum\tmp\mailenv%1.txt -t %MaVariable% -c %2 -s "Changement de mot de passe" >> envoi-mail-prev.cmd
    Set MaVariable=

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    je ne comprend pas le pourquoi de ('Dir %1 /AD /B')

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dob2806 Voir le message
    je ne comprend pas le pourquoi de ('Dir %1 /AD /B')
    J'ai précisé "qq chose comme", faut adapter le code...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    je ne comprend pas comment allez recuperer ce qui est en gras en tant que variable car il est dans une liste d'un fichier csv et que le delimiteur shell resta la ","

    tataMAG01;riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr;Directeur1@toto.fr

    je m'excuse pour mon ignorance... ça ne fait qu'une semaine que je script batch...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    bon faut que je verifie si tout est ok je poste deja ce que j'ai reussi a faire suivant tes conseils.

    randomize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo Traitement de %1
    type mail1.txt  >  tmp/mailenv%1.txt
    echo Le nouveau mot de passe de %1 sera : variabledejadefinie  >>  tmp/mailenv%1.txt
    type mail2.txt  >>  tmp/mailenv%1.txt
    
    echo blat c:\test\forum\tmp\mailenv%1.txt -t %destinataire% -c %copiecarbone% -s "Changement de mot de passe" >> envoi-mail-prev.cmd
    l_randomize
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off > envoi-mail-prev.cmd
    for /F "tokens=1-3 delims=;" %%i in (listusers2.csv) do (
    set user=%%i
    set destinataire=%%j
    set copiecarbone=%%k
    )& call randomize.bat %user% %destinataire% %copiecarbone%
    
    echo %user%-%destinataire%-%copicarbone%
    pause

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dob2806
    ça ne fait qu'une semaine que je script batch...
    Il n'y a pas de soucis les forums sont fait pour ça, faut juste le préciser dans le 1 er post ainsi on peut adapter les réponses.
    Moi aussi j'ai était débutant en batch mais il y a pas mal de temps.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @Echo off
    FOR /F "Tokens=1-3 Delims=;" %%i IN (Listusers2.csv) DO set Users=%%j& call :test %%i %%k
    goto :eof
    :Test
    Echo %1 %Users% %2
    goto :eof
    Ton code semble répondre au besoin. Tu noteras qu'au niveau maintenance/lisibilité les variables ne sont pas de trop.
    Pour le symbole & recherche dans l'aide en ligne de Windows XP "Vue d'ensemble de l'interpréteur de commandes".
    Bon dev !
    [edit]
    coquille dans echo %user%-%destinataire%-%copiecarbone%

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    bon en fait ca ne marche pas tout à fait mon fichier envoi-mail-prev.cmd est bon, mais cela ne me genere plus mes mails dans le rep /tmp...

    voici mon envoi-mail-prev.cmd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    blat c:\test\forum\tmp\mailenv.txt -t toto1@tototo.fr -c Directeur1@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t toto2@tototo.fr -c Directeur2@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t toto3@tototo.fr -c Directeur3@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t toto4@tototo.fr -c Directeur4@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr -c Directeur1@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t riri2@toto.fr,fifi2@toto.fr,loulou2@toto.fr -c Directeur2@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t riri3@toto.fr,fifi3@toto.fr,loulou3@toto.fr -c Directeur3@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenv.txt -t riri4@toto.fr,fifi4@toto.fr,loulou4@toto.fr -c Directeur4@toto.fr -s "Changement de mot de passe"
    PS: je regarde avec ce que tu viens de m'ajouter

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    Bon a priori c'est bon pour cette partie la je reposte ma solution

    randomize.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo Traitement de %user%
    type mail1.txt  >  tmp/mailenv%user%.txt
    echo Le nouveau mot de passe de %user% sera : variabledejadefinie  >>  tmp/mailenv%user%.txt
    type mail2.txt  >>  tmp/mailenv%user%.txt
    
    echo blat c:\test\forum\tmp\mailenv%user%.txt -t %destinataire% -c %copiecarbone% -s "Changement de mot de passe" >> envoi-mail-prev.cmd
    L_randomize.bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off > envoi-mail-prev.cmd
    for /F "tokens=1-3 delims=;" %%i in (listusers2.csv) do (
    set user=%%i
    set destinataire=%%j
    set copiecarbone=%%k
    )& call randomize.bat
    
    pause
    j'ai un bon envoi-mail-prev.cmd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    blat c:\test\forum\tmp\mailenvtotoMAG01.txt -t toto1@tototo.fr -c Directeur1@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtotoMAG02.txt -t toto2@tototo.fr -c Directeur2@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtotoMAG03.txt -t toto3@tototo.fr -c Directeur3@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtotoMAG04.txt -t toto4@tototo.fr -c Directeur4@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtataMAG01.txt -t riri1@toto.fr,fifi1@toto.fr,loulou1@toto.fr -c Directeur1@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtataMAG02.txt -t riri2@toto.fr,fifi2@toto.fr,loulou2@toto.fr -c Directeur2@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtataMAG03.txt -t riri3@toto.fr,fifi3@toto.fr,loulou3@toto.fr -c Directeur3@toto.fr -s "Changement de mot de passe" 
    blat c:\test\forum\tmp\mailenvtataMAG04.txt -t riri4@toto.fr,fifi4@toto.fr,loulou4@toto.fr -c Directeur4@toto.fr -s "Changement de mot de passe"
    et mes mails sont bien dans mon /tmp.

    me reste plus qu'a trouvé le moyen de créer ma tache planifié a J+3 pour finir la totalité de mon script.

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Ah les joies du batch ! Le code suivant n'a pas été modifié :

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 28
    Par défaut
    je posterai la totalité de mon script une fois terminé cela pourrais etre utile à quelques un.

    pour resumer mon script c'est une generation aleatoire de mot de passe via un dictionnaire pour des utilisateurs d'un AD qui envoit un mail pour prevenir ces utilisateurs et qui change le mot de passe dans l'AD 3 jours apres avoir envoyé le mail.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle for batch dos
    Par sacan dans le forum Windows
    Réponses: 1
    Dernier message: 27/09/2011, 16h23
  2. La commande FOR en BATCH
    Par benkhdiri dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 15/12/2008, 13h36
  3. [BATCH] DOS, déplacement de fichier dans une boucle FOR
    Par nicoga dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 14/11/2008, 14h36
  4. [Batch Dos] Probleme de caracteres dans l'export txt
    Par dob2806 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 28/10/2008, 23h37
  5. Réponses: 5
    Dernier message: 01/10/2003, 15h03

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