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 :

Effacer automatiquement certaine donnée dans un fichier texte


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 8
    Par défaut Effacer automatiquement certaine donnée dans un fichier texte
    Bonjour à tous!

    Je suis débutant en programmation et je voudrais savoir si vous connaissez un petit logiciel qui peux faire une manipulation automatique dans un fichier .dat (comme du .txt)

    c'est à dire je reçois un fichier tous les 10 minutes environ et je voudrais qu'il efface certaine donnée dessus sur plusieurs ligne mais toujours les même données.

    Nom : fichier text debut.PNG
Affichages : 1920
Taille : 9,4 Ko

    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|1224|1|0|140|8|192.168.100.100
    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:25:30|1225|1|0|141|8|192.168.100.100
    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 13:50:31|1350|10|0|151|8|192.168.100.100
    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 13:56:30|1356|11|0|152|8|192.168.100.100

    Voilà mon fichier de base

    Les élément en gras que je voudrais supprimer



    Nom : fichier text fin.PNG
Affichages : 1890
Taille : 8,0 Ko

    14||BORDEAUX||IN|COMPTAGE|03/13/2018 12:24:31|1|0|140|8|192.168.100.100
    14||BORDEAUX||IN|COMPTAGE|03/13/2018 12:25:30|1|0|141|8|192.168.100.100
    14||BORDEAUX||IN|COMPTAGE|03/13/2018 13:50:31|10|0|151|8|192.168.100.100
    14||BORDEAUX||IN|COMPTAGE|03/13/2018 13:56:30|1|11|152|8|192.168.100.100

    le fichier modifié qui m'intéresse

    Avez vous un logiciel à me proposer qui à cette fonctionnalité ou non?
    qui supprime

    Je reste à votre disposition pour tout autre renseignement

    Cordialement ARCHIGOR

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    dans ton cas , à priori, il suffit de réécrire le fichier en filtrant les lignes indésirables.
    Il faut utiliser des expressions régulières afin de spécifier les critères de correspondances, qq chose comme ceci en Powershell:
    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
    17
    18
    19
    20
    21
    22
    23
    24
     
    [string[]] $Text=@(
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|0111|1|0|140|8|192.168.100.100'
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|1224|1|0|140|8|192.168.100.100'
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:25:30|1225|1|0|141|8|192.168.100.100'
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 13:50:31|1350|10|0|151|8|192.168.100.100'
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 13:56:30|1356|11|0|152|8|192.168.100.100'
    '14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|2222|1|0|140|8|192.168.100.100'
    )
     
    $Pattern='14\|BOESNER\|BORDEAUX\|1\|IN\|0\|0\|COMPTAGE\|03/13/2018 (.*?)\|1(.*?)\|(.*?)\|0\|(.*?)\|8\|192.168.100.100'
    $Text | 
     Foreach-Object {
       $LigneCourante=$_
       Write-debug "ligne: $LigneCourante" 
     
     #On n'écrit pas les lignes qui correspondent au pattern de recherche
       if ($LigneCourante  -notmatch $Pattern)
       { write-output $LigneCourante}
       #else on filtre la ligne 
     }
    #renvoi uniquement
    #14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|0111|1|0|140|8|192.168.100.100
    #14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|2222|1|0|140|8|192.168.100.100
    Mais dans cette exemple les critères définis pour le filtrage sont très flous.
    Il te faut donc spécifier les cas.

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 8
    Par défaut
    Bonsoir,

    Merci d'avoir pris le temps de me répondre.

    Le problème c'est que en programmation je suis très nul^^

    J'ai bien compris qu'il faut que j'utilise le codage PowerShell.
    Mais existe t'il un logiciel configurable qu'il puisse automatiquement supprimé certaine données dans les lignes ?

    Si non, je veux bien apprendre.


    Je reçoit un fichier .dat
    Plusieurs ligne sont écrites automatiquements ex:
    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:24:31|1224|1|0|140|8|192.168.100.100
    14|BOESNER|BORDEAUX|1|IN|0|0|COMPTAGE|03/13/2018 12:25:30|1225|1|0|141|8|192.168.100.100

    Je voudrais juste si possible supprimé quelque données entre certaine barre verticale ( | ) comme délimiteur.

    c'est à dire modifier le fichier à sa réception et l'envoyer dans un autre dossier.

    Ce que je voudrais supprimer:

    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:24:31|"1224|"1|0|140|8|192.168.100.100
    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:25:30|"1225|"1|0|141|8|192.168.100.100

    En sachant que le nom du document n'est jamais le même exemple (il y aura que la date qui changera):
    LDM_PC.BOESNER.2018-03-13.13-28-23.dat

    Pouvez vous me donner un exemple de codage ou plus si possible?

    Merci encore pour votre réponse

    Cordialement ARCHIGOR

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ARCHIGOR Voir le message
    Le problème c'est que en programmation je suis très nul^^
    Avant de programmer il faut déjà connaitre dans le détail ce que tu dois faire
    Citation Envoyé par ARCHIGOR Voir le message
    Mais existe t'il un logiciel configurable qu'il puisse automatiquement supprimé certaine données dans les lignes ?
    Je n'en connais pas, et s'il en existe il faudrait lui dire quoi faire et comment :-)
    Citation Envoyé par ARCHIGOR Voir le message
    Si non, je veux bien apprendre.
    Pour ce travail l'usage d'expression régulière est nécessaire, le reste du code sera assez 'simple' je pense.

    Citation Envoyé par ARCHIGOR Voir le message
    Ce que je voudrais supprimer:

    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:24:31|"1224|"1|0|140|8|192.168.100.100
    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:25:30|"1225|"1|0|141|8|192.168.100.100
    Sur 15 champs, 4 sont concernés, mais on ne connait pas le/les contenus possible.
    Le premier champ à matcher est-il tjr égal à 'BOESNER' , le second et troisième tjr à '0', le champ date contient tjr de la même date ou on n'en tient pas compte comme les autres champs ?
    Le quatrième champ doit-il être filtré sur toutes les valeurs ou sur certaines valeurs ? dans ce dernier cas lesquelles sont-elles ? Débutent-elles toujours à 1 ? sur 4 chiffres ?
    Le risque si tu ne précises pas ces points est que l'expression régulière filtre des lignes qu'elle ne devrait pas
    Citation Envoyé par ARCHIGOR Voir le message
    En sachant que le nom du document n'est jamais le même exemple (il y aura que la date qui changera):
    LDM_PC.BOESNER.2018-03-13.13-28-23.dat
    On peut filtrer le nom de fichier sur le même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ébauche
    'LDM_PC.BOESNER.2018-03-13.13-28-23.dat' -match 'LDM_PC.BOESNER.(.*).dat'
    Ici aussi si on veut un filtre plus précis il faut connaitre le format de date accolé au nom de fichier, par exemple 7 mn sera codé '-07-' ou '-7-' ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    De ce que je vois le fichier semble respecter une structure de type csv

    Pourquoi pas un "import-csv" -> "select-object" -> "export-csv" ?

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    De ce que je vois le fichier semble respecter une structure de type csv
    Oui effectivement, j'y ai pensé.
    Dans ce cas on code les exclusions directement en Powershell, pas besoin de regex. De débuter la programmation par les regex n'est pas le chemin le plus facile :-)
    Mais le pb des specs 'floues' demeure...

  7. #7
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2018
    Messages : 8
    Par défaut
    Bonjour à tous.

    Désoler de ma réponse tardive.

    Tout d'abord ce que je veux réaliser c'est :

    1 - Modifier un fichier .dat puis l'envoyer dans un autre dossier.

    2 - Que la modification du fichier s'exécute automatiquement, et recommence à chaque nouvelle réception d'un fichier .dat

    3 - Dans le fichier que je modifie, il sera toujours structuré de la même manière.
    Mais il y aura plusieurs lignes à modifié, le nombre de lignes sera aléatoire de 1 minimun à 20 voir plus.

    4 - Le nom du fichier restera le même, il y a juste la date et l'heure qui change (LDM_PC.None.2018-03-12.17-28-49.dat)
    Date Heure


    Le fichier se définit comme cela: (les mots et chiffres entre les piontillés sont à supprimés)

    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:24:31|"1224|"1|0|140|8|192.168.100.100
    14|"BOESNER"|BORDEAUX|1|IN"|0|0"|COMPTAGE|03/13/2018 12:25:30|"1225|"1|0|141|8|192.168.100.100


    Les éléments à supprimé:

    - "BOESNER" le champs n°2 sera toujours égale à BOESNER

    - "|0|0" le champs n°6 et 7 sera toujours égale aux même chiffres (mais je voudrais aussi supprimé les deux délimitateurs en plus "|0|0" )

    - "1224|" le champs n°10 c'est l'heure en format numérique donc elle sera toujours composé de 4 chiffres mais différentes à chaque fois. il faut supprimé le délimitateur "1224|"


    Le format de la date sera toujours -05- ou -03- jamais -3- ou -5-

    Aprés pour la programmation sur quelle logiciel je dois me télécharger ou je peux faire directement sur wordpad ?

    Je reste à votre disposition,

    Cordialement ARCHIGOR

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    Il y a déjà eu plusieurs propositions.
    Laquelle as tu retenue et ou en est ton ébauche de développement ? Rencontre tu des difficultés particulières pour son implémentation ?

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Merci pour le complément d'info je regarde ça demain.
    Citation Envoyé par ARCHIGOR Voir le message
    Après pour la programmation sur quelle logiciel je dois me télécharger ou je peux faire directement sur wordpad ?
    Si tu veux te lancer dans PowerShell, VSCode et l'extension associée est un bon début, si c'est occasionnel, Worpad peut suffire ainsi tu te concentres sur le langage.

Discussions similaires

  1. [VBA-E]Ecriture de données dans un fichier texte
    Par osito57 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 18/08/2017, 19h42
  2. Extraction de données dans un fichier texte en VB6 !
    Par rockroa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/06/2006, 16h00
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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