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 :

Remplacer valeur dans différentes zones


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut Remplacer valeur dans différentes zones
    Bonjour,

    Je vous explique mon problème :

    J'ai un fichier a.txt contenant :
    111
    222
    555


    J'ai un fichier b.txt contenant :
    1;TEST;;111;LA
    2;TEST2;;112;LA
    3;TEST3;;222;LA
    4;TEST4;;333;LA
    5;TEST5;;555;LA

    J'aimerais que dans mon fichier b.txt, si les valeurs [111,222 et 555) sont présentes les mettre dans la zone précédente :
    1;TEST;111;;LA
    2;TEST2;;112;LA
    3;TEST3;222;;LA
    4;TEST4;;333;LA
    5;TEST5;555;;LA

    J'ai fait ce bout de code qui parcours bien les fichiers mais ça ne fonctionne pas à cause des ";;", mon tokens ne les prends pas en compte et donc ça me fausse tout.

    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
    set strRepFicTranscoSource=\\cheminA
    set strRepFicTranscoCible=\\cheminB
    set strNomFicSource=a.txt
    set strNomFicCible=b.txt
    
    REM On parcours les lignes du fichier 'a.txt'
    REM -------------------------------------------
    for /f "delims=" %%a in ('type %strRepFicTranscoSource%\%strNomFicSource%') do (
    	REM On parcours les lignes du fichier 'b.txt'
    	REM -------------------------------------------
    	for /f "tokens=1-5 delims=;" %%b in ('type %strRepFicTranscoCible%\%strNomFicCible%') do (
    		REM Pour la ligne sélectionnée, on parcours chaque valeur
    		REM -------------------------------------------
    		echo %%d - %%e
    		
    	)
    )
    
    pause
    Avec mon code, le echo qui apparait met :
    111 - LA
    112 - LA
    222 - LA
    ...
    Au lieu de :
    - 111 (le premier champ est vide)
    - 112
    ...

    Pouvez-vous m'aider ?

    Cordialement

  2. #2
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Personne n'a d'idée ?
    J'ai entendu parler de la fonction Sed sous DOS, est-ce que celle-ci peut m'aider dans ce que je veux faire ?

    Merci de votre aide.
    Cordialement.

  3. #3
    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
    voici une autre approche à adapter à tes besoins:

    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
    22
    23
    24
    25
    26
    27
    28
    c:\> cat a.txt
    
    111
    222
    555
    
    c:\> cat b.txt
    
    1;TEST;;111;LA
    2;TEST2;;112;LA
    3;TEST3;;222;LA
    4;TEST4;;333;LA
    5;TEST5;;555;LA
    
    c:\> cat tst.cmd
    
    for /f "tokens=1-4 delims=;" %%a in (b.txt) do (
       echo=%%c|>nul findstr /g:"a.txt" && (
       echo %%a;%%b;%%c;;%%d ) || echo %%a;%%b;;%%c;%%d 
    )
    
    c:\> tst.cmd
    
    1;TEST;111;;LA
    2;TEST2;;112;LA
    3;TEST3;222;;LA
    4;TEST4;;333;LA
    5;TEST5;555;;LA

  4. #4
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Merci de ta réponse.

    Je vais essayer de ce pas.
    Peux-tu m'expliquer ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo=%%c|>nul findstr /g:"a.txt" && (
       echo %%a;%%b;%%c;;%%d ) || echo %%a;%%b;;%%c;%%d
    fait ?

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo=%%c   on affiche le token 3 "les numero à tester"
    |  on pipe la sortie dans l'entrée de findstr
    >nul on teste l'expression sans affichage dans la console
    findstr /g:"a.txt"  on cherche dans "a.txt" la chaîne %%c
    && echo %%a;%%b;%%c;;%%d  si true on affiche  %%a;%%b;%%c;;%%d 
    || echo %%a;%%b;;%%c;%%d   si false on affiche %%a;%%b;;%%c;%%d

  6. #6
    Membre chevronné Avatar de binouzzz19
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    385
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 385
    Par défaut
    Ok, merci beaucoup ça marche chez moi avec des données un peu plus complexe donc j'ai du le retravailler mais merci beaucoup !!

    Je pousse le bouchon un peu plus loin, si dans mon a.txt, j'ai :

    111;BUD;CAN;
    222;CAN;;
    555;BUD;;

    Comment se passe la recherche ?
    On ne peut plus faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo=%%c|>nul findstr /g:"a.txt" && (
       echo %%a;%%b;%%c;;%%d ) || echo %%a;%%b;;%%c;%%d
    A cause des nouvelles colonnes dans a.txt n'est-ce pas ?

Discussions similaires

  1. Récup de valeurs dans une zone de liste
    Par Miss Ti dans le forum Access
    Réponses: 4
    Dernier message: 03/08/2006, 15h46
  2. Réponses: 10
    Dernier message: 03/07/2006, 14h55
  3. Changement de valeur dans différents formulaires
    Par dragonfly dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/05/2006, 10h21
  4. Réponses: 2
    Dernier message: 12/04/2006, 10h00
  5. Réponses: 40
    Dernier message: 24/02/2006, 14h19

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