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 :

Transforner un fichier texte [Batch]


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mai 2024
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Transforner un fichier texte
    Bonjour,

    je cherche une solution en commande dos pour mettre un batch avant import d'un fichier texte:

    voici le contenu entrant:
    E;;20240515;;0202;;;;;L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;

    voici le format que je souhaite avoir:
    E;;20240515;;0202;;;;;
    L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;

    Merci de votre aide.

    Cdt,

  2. #2
    Membre habitué
    Homme Profil pro
    Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Inscrit en
    Mai 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 74
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par lolo87270 Voir le message
    Bonjour,

    je cherche une solution en commande dos pour mettre un batch avant import d'un fichier texte:

    voici le contenu entrant:
    E;;20240515;;0202;;;;;L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;

    voici le format que je souhaite avoir:
    E;;20240515;;0202;;;;;
    L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;

    Merci de votre aide.

    Cdt,
    Bonjour,

    Installe CYGWIN install et utilise la commande AWK
    ou installe GAWK pour Windows: gawk

    Cdlt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cat f
    E;;20240515;;0202;;;;;L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;
    $ cat f.awk
    BEGIN   { FS=";"        }
    NF == 19        {
                                    for(i = 1; i <= 9; ++i)printf("%s;", $i)
                                            printf("\n")
                                    for(i = 10; i < 20; ++i)printf("%s;", $i)
                            }
    $ awk -f f.awk <f
    E;;20240515;;0202;;;;;
    L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;;
    $

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mai 2024
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Ok,

    Mais peut-on le faire en powershell

  4. #4
    Membre habitué
    Homme Profil pro
    Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Inscrit en
    Mai 2016
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Admin systèmes (Windows, Linux) et réseaux - Dev DB &Java IHM calcul scientifique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2016
    Messages : 74
    Points : 135
    Points
    135
    Par défaut
    Citation Envoyé par lolo87270 Voir le message
    Ok,

    Mais peut-on le faire en powershell
    Certainement : https://learn.microsoft.com/fr-fr/powershell/

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 192
    Points : 5 774
    Points
    5 774
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $content = Get-Content -LiteralPath ".\input2.txt" -Raw
    if ($content -match '^((?:[^;]*;){9})(.*)')
    {
        Set-Content -LiteralPath ".\output2.txt" -Value ($Matches[1] + "`r`n" + $Matches[2]) -Force -NoNewline
    }

    input2.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E;;20240515;;0202;;;;;L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;
    output2.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    E;;20240515;;0202;;;;;
    L;0700826;FLOTTEUR JAUNE LA GEE P1139506;0202;UN;1;20240524;011739;;

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mai 2024
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    cela fonctionne, mais j'ai deux petits soucis:
    1) je peux avoir deux lignes dans le fichier
    exemple:
    E;;20240423;Mathilde;0204;;;;;L;0700761;KIT REPARATION T.TONTE COMPLET;0204;UN;1;20240504;011739;;
    E;;20240423; ;0204;;;;;L;0700805;COUSSINET DE LEVIER 483-093;0204;UN;2;20240504;011739;;

    resultat attendu:
    E;;20240423;Mathilde;0204;;;;;
    L;0700761;KIT REPARATION T.TONTE COMPLET;0204;UN;1;20240504;011739;;
    L;0700805;COUSSINET DE LEVIER 483-093;0204;UN;2;20240504;011739;;

    2) le repertoire peut avoir plusieurs fichiers à traiter

    Voici le code :
    $ListeFichiers = Get-ChildItem -path "C:\Laurent\Clients\Alliance Pastorale Service\Test\SLIM4\*.txt"
    $FicSortie = "C:\Laurent\Clients\Alliance Pastorale Service\Test\SLIM4\X3_DA_$(Get-Date -Format 'yyyyMMdd_HHmm').txt"

    foreach ($Fic in $ListeFichiers){
    $Content = (Get-Content $Fic)
    if ($Content -match '^((?:[^;]*{9})(.*)')
    {
    Set-Content $FicSortie -Value ($Matches[1] + "`r`n" + $Matches[2]) -Force -NoNewline
    }
    }

    Merci de votre aide

    Cdt,

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 192
    Points : 5 774
    Points
    5 774
    Par défaut
    Code powershell : 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
    $content = Get-Content -LiteralPath ".\input3.txt"
     
    $result = @()
    foreach($line in $content)
    {
        if ($line -match '^((?:[^;]*;){9})(.*)')
        {
            if (@($result).Count -eq 0)
            {
                $result += $Matches[1]
            }
            $result += $Matches[2]
        }
    }
     
    Set-Content -LiteralPath ".\output2.txt" -Value ($result -join "`r`n") -Force -NoNewline

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mai 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mai 2024
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Merci pour le code. cela fonctionne bien.

    bonne journée

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

Discussions similaires

  1. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57
  2. Réponses: 1
    Dernier message: 12/02/2003, 09h36
  3. [VB6] Ecrire/Modifier/Effacer ds un fichier text-4 Chs/Lg
    Par Jonathan_Korvitch dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 24/12/2002, 18h54
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56
  5. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17

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