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

WinDev Discussion :

Extraire une date d'un nom de fichier


Sujet :

WinDev

  1. #1
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut Extraire une date d'un nom de fichier
    Bonjour, j'essaye d'extraire une date des noms de fichiers reçus.
    Jusqu'à là tout fonctionnait bien, puisque je recevais un format simple (Ex. 2017-12-09.pdf)
    ce petit code me suffisait -->

    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
    PROCEDURE verif_LibDocument()
    resultat,  strDate, libFichier  sont des  chaînes
     
    POUR TOUTE CHAÎNE UnFichier DE ResListeFichier SEPAREE PAR RC
        Multitâche(50)
        nomfic=fExtraitChemin(UnFichier,fFichier)
        nomext=fExtraitChemin(UnFichier,fExtension)
     
        strDate=Milieu(nomfic,0,10)
     
        strDate = Remplace(strDate,"-","")
        strDate = Remplace(strDate,"_","")
     
        SI PAS (DateValide(strDate)) ALORS
            resultat = resultat+nomfic +nomext +RC
        FIN
     
    FIN
    Maintenant je découvre que le format est susceptible de changer, je peux avoir plusieurs caractères avant / après la date, mais pas toujours ...
    par exemple
    AA-2017-12-09.pdf
    BBB-2017-12-09.pdf
    BBB-2017-12-09-XXXXX.pdf

    2017-12-09.pdf (ou l'ancien format est aussi présent)

    Le format de date reste le même, mais le nombre de caractères autour varient...

    J'ai pensé à une expression régulière, mais je ne les maitrise pas trop... J'ai fait quelques essais mais pas trop concluants

    Votre aide sur cette expression régulière me serait bien utile.
    Merci !

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 264
    Points
    5 264
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La fonction ExtraitChaine() peut éventuellement convenir à ton problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sAnnée, sJour, sMois sont chaines
    sRes est chaine
     
    sRes=ExtraitChaine(NomFic,1,"-")
    SI Val(sRes)=0 ALORS //La chaine extraite est alphabétique
         sAnnée=ExtraitChaine(NomFic,2,"-")
         sJour=ExtraitChaine(NomFic,3,"-")
         sMois=ExtraitChaine(NomFic,4,"-")
    SINON
        sAnnée=sRes
        sJour=ExtraitChaine(NomFic,2,"-")
        sMois=ExtraitChaine(NomFic,3,"-")
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Mon idée : remplacer la ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strDate=Milieu(nomfic,0,10)
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE CHAÎNE loop_ch DE nomfic SEPAREE PAR "-"
    	SI Val(loop_ch)>2000 ALORS
    		strDate=Milieu(l_ch,Position(nomfic,loop_ch),10)
    		SORTIR
    	FIN
    FIN

  4. #4
    Membre actif
    Homme Profil pro
    Développeur WEB - Admin Réseaux
    Inscrit en
    Décembre 2004
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Développeur WEB - Admin Réseaux
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2004
    Messages : 153
    Points : 286
    Points
    286
    Par défaut
    BOnjour,

    si tu veux essayer avec les expréssions régulières tu peux essayer ce code.

    Bon dev

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    PROCEDURE verif_LibDocument()
    resultat,  strDate, libFichier  sont des  chaînes
    bvalide est un booléen
     
     
    POUR TOUTE CHAÎNE UnFichier DE reslistefichier SEPAREE PAR RC
    	Multitâche(50)
    	nomfic=fExtraitChemin(UnFichier,fFichier)
    	nomext=fExtraitChemin(UnFichier,fExtension)
     
    	strDate = nomfic  //Cas nom de fichier égal à  2017-12-09
    	SI PAS VérifieExpressionRégulière(strDate , "[0-9]{4}[-][0-9]{2}[-][0-9]{2}") ALORS 
    		bvalide = Faux
    		strDate = nomfic[[Position(nomfic,"-",1,DepuisDébut)+1 A Taille(nomfic)]] //Cas nom de fichier égal à  AAAA-2017-12-09
    		SI PAS VérifieExpressionRégulière(strDate , "[0-9]{4}[-][0-9]{2}[-][0-9]{2}") ALORS 
    			bvalide = Faux
    			strDate = nomfic[[1 A Position(nomfic,"-",0,DepuisFin)-1]] //Cas nom de fichier égal à  2017-12-09-BBBBB
    			SI PAS VérifieExpressionRégulière(strDate , "[0-9]{4}[-][0-9]{2}[-][0-9]{2}") ALORS 
    				bvalide = Faux
    				strDate = nomfic[[Position(nomfic,"-",1,DepuisDébut)+1 A Position(nomfic,"-",0,DepuisFin)-1]] //Cas nom de fichier égal à  AAAAA-2017-12-09-BBBBB
    				SI PAS VérifieExpressionRégulière(strDate , "[0-9]{4}[-][0-9]{2}[-][0-9]{2}") ALORS 
    					bvalide = Faux
    				SINON
    					bvalide = Vrai
    				FIN
    			SINON
    				bvalide = Vrai
    			FIN
    		SINON
    			bvalide = Vrai
    		FIN
    	SINON
    		bvalide = Vrai
    	FIN	
     
    	SI bvalide ALORS
    		strDate = Remplace(strDate,"-","")
    		strDate = Remplace(strDate,"_","")
     
    		SI PAS (DateValide(strDate)) ALORS
    			resultat = resultat+nomfic +nomext +RC
    		FIN
    	SINON
    		Erreur ("Format inconnu")
    	FIN
     
    FIN

  5. #5
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    Voroltinquo, romulus001, niuniuk36

    Merci beaucoup pour vos réponses, je vais toutes les tester

  6. #6
    Membre régulier Avatar de Pingva
    Profil pro
    Inscrit en
    Août 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 190
    Points : 78
    Points
    78
    Par défaut
    romulus001, très bonne l'idée ! Elle est simple, et l'air de bien fonctionner

    Je vais choisir cette solution

    Et merci encore à tous de répondre à mon problème
    Bonne journée !

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

Discussions similaires

  1. [Batch] Extraire une date dans un nom de fichier
    Par cycy75 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 19/06/2009, 17h23
  2. Extraire une Date à partir d'une String dans un fichier
    Par Dalidou dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 18/03/2009, 09h19
  3. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  4. Réponses: 5
    Dernier message: 08/05/2006, 00h39
  5. extraire une date dans un texte
    Par fbu78 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 23h12

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