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 :

aide pour For /F dans un fichier txt.


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut aide pour For /F dans un fichier txt.
    Bonjour à tous,

    Je me permets de demander vos lumières sur un point.
    Je débute dans les fonctions et tout cela est encore un peu flou pour moi.

    J’ai besoin de récupérer une clé de registre (différentes sur chaque PC) pour en modifier la valeur.
    En parcourant pas mal de sujets parlant de cela je suis arrivé à: (c’est de l’assemblage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    REG QUERY "HKLM\system\currentcontrolset\control\class" /v RoamingPreferredBandType /s > c:\file.txt
    FOR /F "eol=; tokens=1 skip=1 delims=;" %i IN (c:\file.txt) DO REG ADD %i% /v RoamingPreferredBandType /t REG_SZ /d 2
    La première partie Reg Query vers un fichier TXT se passe bien.
    Ensuite par contre, pour le FOR, j’ai « \file.txt) était inattendu.

    Pour le test, si j’essaye FOR /F "eol=; tokens=1 skip=1 delims=;" %i IN (c:\file.txt) DO echo testJ’ai 3 echo test qui s’affichent.

    Est-ce que quelqu’un pourrais m’expliquer ou est mon erreur ?
    Merci d’avance à vous

  2. #2
    Membre régulier
    Homme Profil pro
    Globetrotter :D
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Globetrotter :D
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Par défaut
    Je n'ai pas cette clef sur mon poste, peux-tu faire une petite capture que je vois à quoi elle ressemble?
    Veux-tu modifier cette valeur de façon identique sur tous les PCs? Si oui explique le résultat attendu stp.

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut
    Merci pour ta reponse.

    La valeur a modifier est effectivement identique sur tous les postes.
    Cette clé sert a modifier la bande utilisée par la carte wifi.
    0 Aucune préférence.
    1 Préférer bande 2.4 Ghz.
    2 Préférer bande 5.2 Ghz.

    L'emplacement de cette clé est différent en fonction du modele de PC/Type de carte.

    Il m'a été demandé de modifier la valeur 0 à 2 pour tout le parc.
    Images attachées Images attachées   

  4. #4
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    Citation Envoyé par Toche77 Voir le message
    REG QUERY "HKLM\system\currentcontrolset\control\class" /v RoamingPreferredBandType /s > c:\file.txt
    FOR /F "eol=; tokens=1 skip=1 delims=;" %i IN (c:\file.txt) DO REG ADD %i% /v RoamingPreferredBandType /t REG_SZ /d 2
    Ton For ne me semble pas très joli, essai en remplaçant %i par %%i et %i% par une autre variable entre "!".
    Utilise aussi l'expansion retardée.
    Ça donnerai ça :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    setlocal EnableDelayedExpansion
    FOR /F "eol=; tokens=1 skip=1 delims=;" %%i IN (c:\file.txt) DO (
        set A_Add=%%i
        REG ADD !A_Add! /v RoamingPreferredBandType /t REG_SZ /d 2
    )

    Après je ne sais pas si ton add dans le registre est bien écrit

  5. #5
    Membre régulier
    Homme Profil pro
    Globetrotter :D
    Inscrit en
    Juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Globetrotter :D
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 7
    Par défaut
    Ok du coup c'est inutile de QUERY la clef avant car dans tous les cas tu la changes à 2.


    Par contre la question après c'est de savoir comment déployer ceci, le mieux ça aurait été de le faire par GPO si tu as un Active Directory, c'est exactement fait pour ça.

    Sinon tu peux exécuter simplement le batch (il te faudra les droits admin pour modifier la base de registre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REG ADD "HKLM\system\currentcontrolset\control\class" /v RoamingPreferredBandType /t REG_SZ /d 2 /f
    PS: Le /f que tu n'avais pas mis permet d'enlever la confirmation d'ajout.


    Après si tu veux l'exécuter de ton poste, je suppose que tu as une liste ordilist.txt comme ceci :
    Et le code devrait ressembler à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /F %%G IN (ordilist.txt) DO REG ADD "\\%%G\HKLM\system\currentcontrolset\control\class" /v RoamingPreferredBandType /t REG_SZ /d 2 /f

    Après niveau droit je ne sais pas comment ça peut passer :/

  6. #6
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Par défaut
    Merci Bragu Demon, ça fonctionne effectivement.
    Je vais prendre un peu de temps pour me documenter sur les infos que tu as donné pour essayer de comprendre.

    Par contre lorsque je le lance, même si ça fonctionne, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    C:\Temp>find5.cmd
    L'opération a réussi.
    ERREUR*: non de clé non valide.
    Entrez "REG ADD /?" pour afficher la syntaxe.
    ERREUR*: non de clé non valide.
    Entrez "REG ADD /?" pour afficher la syntaxe.
    J'ai l'impression qu'il boucle a un moment et tente de s’exécuter 3 fois. (constaté avec le echo test de mon poste initial).

    @RaidJan:

    Le query va me servir justement à créer sur chaque poste le file.txt qui va ensuite servir au For /F.
    Apres l'exécution du script, éventuellement une pause puis un delete du fichier pour que cela soit plus propre.

    De cette manière, je n'ai pas besoin d'une liste de PC centralisée..
    Je compte effectivement lancer le script par GPO avec un filtre WMI qui filtrera les portables, j'ai la chance de ne pas avoir de problème de droit.

    En tout cas, un grand merci a vous deux pour votre participation.

  7. #7
    Membre confirmé Avatar de Bragu Demon
    Homme Profil pro
    Intégrateur d'Explopitation
    Inscrit en
    Juin 2013
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Intégrateur d'Explopitation
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2013
    Messages : 125
    Par défaut
    La boucle for te permet de lire un fichier ligne à ligne.
    Pour chaque ligne tu exécutes une commande, ici c'est "echo test".

    Si tu as 3 fois "Test" qui s'affiche, c'est que tu dois avoir 3 lignes dans ton fichier.

    Il est supposé ressembler à quoi ton fichier file.txt ?

    Parce que tu peux évidemment mettre des IF dans ta boucle for :-)

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/06/2011, 21h05
  2. code java pour modifier une ligne dans un fichier txt
    Par pacomou dans le forum Général Java
    Réponses: 1
    Dernier message: 03/09/2009, 15h23
  3. Réponses: 5
    Dernier message: 28/02/2008, 21h30
  4. récupéré une ligne dans un fichier txt pour mettre dans msgbox
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 14h01
  5. Récupération de données pour mettre dans un fichier .txt
    Par lince102 dans le forum Interfaces Graphiques
    Réponses: 10
    Dernier message: 24/01/2008, 11h29

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