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 :

Remplacement mots dans un fichier et copie dans differents dossiers [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut Remplacement mots dans un fichier et copie dans differents dossiers
    Bonjour,

    je suis confronté a un petit soucis de script, je m'explique:

    j'ai un fichier "test.cfg" dans le dossier "C:\Test\" qui contient:

    # add given tag to inventory results
    tag = toto


    je voudrais créer un script qui copie ce fichiers dans 5 dossiers:
    C:\Test\1\
    C:\Test\2\
    C:\Test\3\
    .....

    et qui dans le meme temps remplace le "tag = toto" en "tag = Za" "tag = Ra" "tag = Pa".....

    sachant que dans chaque dossier il y a deja un fichier test.cfg mais avec le mauvais "tag="


    OU

    un script qui va chercher dans chaque dossiers le fichier "test.cfg"
    et modifier le mots derriere "tag = " par celui désiré (ex: tag = 1 par tag = 2)

    Actuellement, dans tout les fichier "test.cfg" le TAG est "tag = 1"

    avez vous une idée de comment je peux faire ? la 2ieme solutions serait plus simple je pense ...

    merci d'avance

  2. #2
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut !

    une idée !


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @echo off
    setlocal enabledelayedexpansion
     
    set "$replace=2"
     
    pushd "c:\test"
     
    for /r  %%a in (*.cfg) do (
    	(for /f "delims=" %%b in ('type "%%a"') do  (
    		set "$line=%%b"
    		if /i "!$line:~0,3!"=="tag" set $line=tag = %$replace%
    		echo !$line!
    	)
    	)>%%~na_out%%~xa
    	del "%%a" && move "%%~na_out%%~xa" "%%a"
    )
    popd

    Dans la variable $replace tu mets la valeur du nouveau TAG
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut Merci mais....
    merci cela m'a bien servi...

    mais maintenant je suis confronté a un autre soucis : la recuperation de l'inputbox dans un fichiers txt
    dans mon VBS la boite de dialogue, on tape un texte, le fichier tag.txt se créer mais il reste vide,
    impossible de faire correspondre "data1=" a la valeur de l'inputbox



    voila mon script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    InputBox("Quel TAG pour le client","Demande de TAG","REPONSE")
    '*** Préparation de l'environnement
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")
    FichierTXT = "E:\tag.txt"
    
    '*** Création du fichier texte "c:\toto.txt"
    Set NewFichier = fso.CreateTextFile(FichierTXT,TRUE)
    
    '*** Ajout de données dans la variable "data1".
    data1 = TAG
    
    '*** Ecriture des données de la variable "data1" dans le fichier texte.
    NewFichier.WriteLine(data1)
    
    '*** Configuration de la variable d'environnement
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")
    
    '*** Suppression du fichier
    fso.deletefile "E:\tag.txt"
    
    WScript.Quit

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    Une solution :


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    if not exist #.vbs call:construct
    for /f "delims=" %%a in ('cscript.exe /nologo #.vbs') do set $tag=%%a
    echo le TAG =^> %$tag%
    del #.vbs
     
    exit/b
    :construct
    (echo tag = InputBox("Enter the TAG"^) & echo wscript.echo(tag^))>#.vbs

    Juste une question pourquoi veux-tu mettre le tag dans un fichier TXT.

    Tu peux tout faire en une routine !

    Récuperer le TAG et changer tout les fichiers .CFG

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    en gros c'est pour FUSION INVENTORY version portable.
    dans le dossier fusion inventory, il y a un .cmd qui s'execute pour faire l'inventaire,
    ce .cmd s'appuie sur un fichier agent.cfg, dans lequel il y a un tag a changer en fonction du client auquel je fait l'inventaire.

    je me suis inspiré de ton 1er scirpts pour en faire un qui ne modifie que un dossier (sur lequel s'appuie FUSION) et le tag et entrer manuellement a chaque fois qu'on lance mon scripts.
    MAIS C'EST MOCHE !

    j'aurais voulu une INPUTBOX dans laquelle on renseigne le TAG et mon script le recupere pour ensuite faire ses modif dans le .cfg

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    cest bon !!!!!
    super ton script c'est EXACTEMENT ce qu'il me fallait !!!!!
    tout fonctionne a merveille !!!!!

    MILLE MERCI !!!!!!

    EDIT: juste un truc quand on clic sur ANNULER j'aimerais que cela quitte le scripts en gros que cela fasse un goto :fin tu as une idée ?

    EDIT 2 (FERME: j'ai trouvé): j'aimerais aussi que le tag saisie exemple "toto" soit comparer a une liste tag contenue dans "liste.cmd"
    si c'est trouvé, dire OK
    sinon : est normal ? et donné deux choix "quitter" et goto...
    SOLUTION:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    :compare
    findstr "%$tag%" liste-tag.cmd
    cls
    if %errorlevel%==0 goto :Msg
    echo TAG non trouve
    echo.
    echo.
    goto :nontrouve
    :Msg
    echo TAG Ok !
    echo.
    echo.
    goto :trouve

  7. #7
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    fa~It de cette manière ça sera plus simple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    :compare
    cls
    findstr "%$tag%" liste-tag.cmd || goto:nontrouve
    echo TAG Ok !
    ::Ici le reste du code
     
    exit/b
     
    :nontrouve
    echo TAG non trouve
    ::Ici le reste du code
     
    exit/b
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    c'est vrai que c'est mieux.

    et pour le bouton Annuler tu as une idée ?

  9. #9
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    if not exist #.vbs call:construct
    for /f "delims=" %%a in ('cscript.exe /nologo #.vbs') do set $tag=%%a
    if "%$tag%"=="" (goto:error) else (echo le TAG =^> %$tag%)
    del #.vbs
    
    exit/b
    :construct
    (echo tag = InputBox("Enter the TAG"^) & echo wscript.echo(tag^))>#.vbs
    exit/b
    
    :error
    Echo operation annulee
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    :construct
    timeout 1
    (echo tag = InputBox("TAG du client" , "INVENTAIRE"^) & echo wscript.echo(tag^))>TMP\#.vbs
    echo.
    echo.
    pause
    goto :compare
    Quand on arrive a cette partie pour la 1ere fois, le script passe directement au :COMPARE, il faut le relancer pour qu'il la prenne en compte, tu ne saurais pas pourquoi ?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    TROUVE !

    il faut laisser le #.vbs et non pas le faire suppr

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

Discussions similaires

  1. Recherche dans un fichier impossible enregistré dans un fichier
    Par cdjkhdjlhxjklnjskznj dans le forum Langage
    Réponses: 19
    Dernier message: 03/12/2014, 00h09
  2. [XL-2007] Sauvegarde d'une copie dans un fichier
    Par Lison Lisette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2010, 22h50
  3. Réponses: 7
    Dernier message: 21/05/2008, 17h29
  4. [Probléme] Script copie dans un fichier
    Par maloute80 dans le forum Langage
    Réponses: 23
    Dernier message: 29/11/2007, 15h52
  5. Réponses: 3
    Dernier message: 20/09/2006, 11h05

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