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 d'une chaîne de caractères dans plusieurs fichiers txt [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Remplacement d'une chaîne de caractères dans plusieurs fichiers txt
    Bonjour a tous

    Je suis un peu novice dans le domaine du Batch et je sollicite donc vos lumières .

    Voila mon problème, j'ai plusieurs fichier .txt qui contiennent les ventes de la semaine de nos boutiques (je travaille de la distribution textile). A l’intérieur de ces fichiers (dont le nombre est variable d'une semaine a l'autre) il y a des codes de boutiques avec la syntaxe suivante :

    ;82;
    ;83;
    ;86;

    Ces codes ne sont pas exploitable par notre logiciel tel quel et je dois les modifier manuellement un à un avec la syntaxe suivante :

    ;082;
    ;083;
    ;086;

    J'aurai besoin de votre aide pour créer une boucle qui test tout les fichiers d'un dossier (ex: C:\test) et qui remplace les anciens codes boutiques par ceux désirés.

    J'espere que ma demande est claire.

    Merci d'avance pour l'aide que vous pourriez m'apporter .

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Salut,

    Faudrait que tu complètes un petit peu, quel est ton format de départ?

    ;01; à ;99;
    ou
    ;1;-;99;


    En gros si le code ne commence pas par un zero, il faut ajouté un ZERO?

    Allé je fais un test et je te poste ça, mais je débute aussi lol

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Salut

    Bon hé bien je bloque dans mon if not qui ne fonctionne pas avec les ";"
    Je n'ai pas la réponse mais tu as déjà une base.

    Code batch : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    @echo off
    cls
    Title %~n0 Script 
     
    setlocal enableextensions enabledelayedexpansion
     
     
    REM call:fonction fichierSource fichierDestination
    call:searchAndReplace "source.txt" "output.txt"
     
     
    pause 
    exit
     
     
     
     
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %2 del %2
     
    for /f "delims=" %%a in ('type %1') do (
    	set $ligne=%%a
    	set $ligne=!$ligne:~0,2%!
    	if not "!$ligne!" == ";0" (
    		echo !$ligne!
        )
    	echo !$ligne!>>%2
    )
    goto:eof

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Bon j'ai cresé un peut et ça fonctionne!

    Tu as très peu de modif à apporté pour faire la recherche dans un répertoire, je te laisse rechercher un peu (allez un indice *.txt)

    Code batch : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    @echo off
    cls
    Title %~n0 Script 
     
    setlocal enableextensions enabledelayedexpansion
     
    REM call:fonction fichierSource fichierDestination
    call:searchAndReplace "source.txt" "output.txt"
     
    pause 
    exit
     
    :searchAndReplace
    REM Si le fichier de sortie existe, on l'efface
    if exist %2 del %2
     
    for /f "delims=; tokens=1" %%a in ('type %1') do (
    	set ligne=%%a
    	set fullLigne=!ligne!
    	set ligne=!ligne:~0,1%!
    	if not "!ligne!"=="0" (
    		echo ;!fullLigne!;>>%2
    	)
     
    	if "!ligne!"=="0" (
    		echo ;!fullLigne!;>>%2
    	)
    )
    goto:eof

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par dudux2 Voir le message
    Salut,

    Faudrait que tu complètes un petit peu, quel est ton format de départ?

    ;01; à ;99;
    ou
    ;1;-;99;


    En gros si le code ne commence pas par un zero, il faut ajouté un ZERO?

    Allé je fais un test et je te poste ça, mais je débute aussi lol
    Merci dudux2 pour tout tes efforts. Alors je vais apporter quelques precisions :


    il y a des codes boutique sur 2 ou la digite (ex : 82 ou 782). Le logiciel dans lequel on intègre les ventes lis que les format de boutique sur 3 digits (ex: 782). Ce code boutique peut se retrouvé (au maximum) 2 fois par ligne avec la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'En rouge les codes boutiques
    08200030;82;785;2000096756001;3;30/07/2017;10009063;60;NOIR;1;TAILLE UNIQUE                 ;1;00
    Pour les codes a 2 digits je dois rajouter le 0 avant pour que ça fonctionne. heureusement pour moi il n'y a que 3 codes boutique qui sont concernés le 82 , 83 et 86.

    Dis moi stp si c'est assez clair et si ton code est compatible avec cela.

    Merci d'avance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut
    Actuellement il est compatible avec ce que tu ma donnés au tout début, cependant je vais pas tout faire à ta place! (de plus, je pars en congé, me libéré l’esprit)

    Dit nous ou tu bloque?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par dudux2 Voir le message
    Actuellement il est compatible avec ce que tu ma donnés au tout début, cependant je vais pas tout faire à ta place! (de plus, je pars en congé, me libéré l’esprit)

    Dit nous ou tu bloque?
    Merci d'avoir pris la peine de me répondre, cependant je n'ai en aucun cas demandé a faire tout a ma place! J'aurai aimé un peu plus de commentaire sur le fonctionnement du script ( ex : le fonctionnement de la boucle for).

    Comme je l'ai dis je suis plus que novice dans le domaine, c'est pour ça que j'ai sollicité de l'aide.

    Je te souhaite d'agréable vacances et merci encore une fois pour ton aide

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Août 2017
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous,

    au final j'ai trouvé une solution plus rapide est surtout plus simple que je partage avec vous. C'est un petit .exe qui permet de rechercher des chaines de caractères dans tout les fichier d'un dossier et de les remplacer par celles désirées :

    https://findandreplace.codeplex.com/

    merci encore a vous tous.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 30/08/2017, 10h57
  2. [Python 3.X] Script modifiant une chaîne de caractères dans plusieurs fichiers.
    Par Julien698 dans le forum Général Python
    Réponses: 4
    Dernier message: 09/09/2014, 13h41
  3. Réponses: 11
    Dernier message: 15/07/2014, 09h52
  4. Rechercher/remplacer une chaine de caractères dans plusieurs fichiers
    Par _shuriken_ dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/07/2011, 20h06
  5. Réponses: 0
    Dernier message: 19/01/2009, 10h00

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