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 :

Modification de valeur dans plusieurs fchiers csv.


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Par défaut Modification de valeur dans plusieurs fchiers csv.
    Bonjour,

    J'ai plusieurs fichiers csv et je cherche à remplacer dans tous ces fichiers, une chaine de caractère par une autre. Je précise avec les virgules pour éviter de prendre la chaine qui serait dans une autre phrase.
    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
    
    @echo on
    setlocal enableDelayedExpansion
    for /F "usebackq" %%i in (`dir /b bat*.csv`) do (
    set Fichier=%%~nxi
    echo !Fichier!
    pause
    Set outputFile=bis_!Fichier!
    REM Set chaine1=,Stanley,
    REM Set remplace1=,stan,
     if exist "%outputFile%" del "%outputFile%"
    Pause
    echo "deux"
    for /f "usebackq delims=*" %%T in ("%Fichier%") do (
       echo %%T
       Set TempVar=%%T
       set TempVar=!TempVar:,Stanley,=,stan,!
       echo !TempVar!>>"%outputFile%"
       REM del %Fichier%
       REM ren "%OutputFile%" "%Fichier%"
    	)
    )
    endlocal
    pause
    Les pauses, c'est pour voir comment se déroule mon code. Si je l'exécute sur un seul fichier en précisant le nom du fichier d'entrée et le nom du fichier de sorti, tout va bien.
    Mais avec la version avec ma boucle pour parcourir tous les fichiers, ça ne fonctionne pas.
    Une idée de ce qui n'irait pas ?

    Par avance merci.

  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
    Par défaut
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=*" %%T in ('TYPE "!Fichier!"') do (

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Par défaut
    Bonjour,
    Merci pour ce retour.

    Donc avec la modification, j'ai retesté et trouvé que ma variable fichier n'est pas transmise. Du coup, j'utilise %%i pour créer le nouveau fichier. Je sais que je vais devoir comprendre pourquoi mais ce n'est pas la raison de ma réponse.

    J'ai mis un del et un ren en commentaire car lorsque j'ouvre le fichier final, je n'ai que la dernière ligne traitée. Est-ce que vous avez une idée ?
    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
    @echo on
    setlocal enableDelayedExpansion 
    for /F "usebackq" %%i in (`dir /b bat*.csv`) do (
    set Fichier=%%~nxi
    echo %%i
    pause
    Set outputFile=bis_%%i
    REM Set chaine1=,Stanley,
    REM Set remplace1=,stan,
     if exist "%outputFile%" del "%outputFile%"
    for /f "delims=*" %%T in ('TYPE "!Fichier!"') do (
       echo %%T
       set ancien=%%i
       echo !ancien!
       pause
       Set TempVar=%%T
       set TempVar=!TempVarset:,Stanley,=,stan,!
       echo !TempVar!>>bis_%%i
       REM del %%i
       REM ren bis_%%i %%i
    
    	)
    )
    endlocal
    pause

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juillet 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juillet 2006
    Messages : 16
    Par défaut
    Non c'est bon en fait, je ne mets pas les commandes aux bons endroits.
    Il fallait les sortir de la seconde boucle. Désolé. Je ne voyais plus très clair à la fin.
    Citation Envoyé par erce78 Voir le message
    Bonjour,
    Merci pour ce retour.

    Donc avec la modification, j'ai retesté et trouvé que ma variable fichier n'est pas transmise. Du coup, j'utilise %%i pour créer le nouveau fichier. Je sais que je vais devoir comprendre pourquoi mais ce n'est pas la raison de ma réponse.

    J'ai mis un del et un ren en commentaire car lorsque j'ouvre le fichier final, je n'ai que la dernière ligne traitée. Est-ce que vous avez une idée ?
    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
    @echo on
    setlocal enableDelayedExpansion 
    for /F "usebackq" %%i in (`dir /b bat*.csv`) do (
    set Fichier=%%~nxi
    echo %%i
    pause
    Set outputFile=bis_%%i
    REM Set chaine1=,Stanley,
    REM Set remplace1=,stan,
     if exist "%outputFile%" del "%outputFile%"
    for /f "delims=*" %%T in ('TYPE "!Fichier!"') do (
       echo %%T
       set ancien=%%i
       echo !ancien!
       pause
       Set TempVar=%%T
       set TempVar=!TempVarset:,Stanley,=,stan,!
       echo !TempVar!>>bis_%%i
       REM del %%i
       REM ren bis_%%i %%i
    
    	)
    )
    endlocal
    pause

Discussions similaires

  1. [MS SQL] Remplacer des valeurs dans plusieurs tables
    Par salmoliv dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/10/2006, 17h31
  2. recopier une valeur dans plusieurs enregistrements
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 17h02
  3. Modifer une valeur dans un panier sans la valider
    Par budiste dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2006, 09h53
  4. [VB6]Modification de valeurs dans une MSflexgrid
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 14/02/2006, 08h48
  5. [Excel] Total de valeurs dans plusieurs feuilles
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/01/2006, 12h25

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