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 :

Comment tester le format (date) d’une variable ?


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Par défaut Comment tester le format (date) d’une variable ?
    Bonjour à tous,

    J’aurais aimé pouvoir de tester le contenu d’une variable pour savoir s’il est au format date (AAAA/MM/JJ) avant de l’exploiter. Est-ce faisable simplement et si oui comment ?

    Merci pour votre aide.

  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
    Quelle est la finalité du code et pourquoi veux-tu tester ça.

    Ne serait-il pas plus simple de récuperer la date avec le bon format ?


  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Par défaut
    Cette date est contenue dans un fichier sauvegarde (txt) qui est accessible à beaucoup d’utilisateurs.

    Ce fichier pourrait être effacé par erreur (ça je sais le gérer ) mais également modifier par erreur et, si cette date n’a pas un format correct, la suite du programme ne fonctionnera pas.

  4. #4
    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
    le problème c'est le mois et le jour.

    Pour l'année on peut compter 4 caractères mais si le mois et le jour sont invers, comment veux-tu tester ?


  5. #5
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    J'ai posté quelque chose de similaire en vbscript dans Stackoverflow : Read text and match all dates in text file otherwise write value to error.txt file
    Inspirez-vous de ce code

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Par défaut
    En fait, il n’y a rien d’immédiat ; c’est ce que je voulais savoir.
    Je vais donc essayer de débrouiller. Si quelqu’un a une idée lumineuse, je suis tout de même preneur !!!

  7. #7
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut
    Citation Envoyé par MrBiduleX Voir le message
    En fait, il n’y a rien d’immédiat ; c’est ce que je voulais savoir.
    Je vais donc essayer de débrouiller. Si quelqu’un a une idée lumineuse, je suis tout de même preneur !!!

    Pouvez-vous nous poster votre code !

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2016
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2016
    Messages : 63
    Par défaut
    Bonjour,

    Voici la partie "traitement date" que j'utilise dans un programme plus complet. Si cela peut aider...

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    @ECHO OFF
    CHCP 850>NUL
    CLS
    
    SETLOCAL EnableDelayedExpansion
    
    REM -------------------------------------------------------------------------------------------------------------
    REM *** Traitement info date de copie ***
    
    REM Calcul du nombre de jours en fonction du mois de l'année
    SET /A JA=31
    SET /A FE=%JA%+29
    SET /A MA=%JA%+%FE%+31
    SET /A AV=%JA%+%FE%+%MA%+30
    SET /A MAI=%JA%+%FE%+%MA%+%AV%+31
    SET /A JUIN=%JA%+%FE%+%MA%+%AV%+%MAI%+30
    SET /A JU=%JA%+%FE%+%MA%+%AV%+%MAI%+%JUIN%+31
    SET /A AO=%JA%+%FE%+%MA%+%AV%+%MAI%+%JUIN%+%JU%+31
    SET /A SE=%JA%+%FE%+%MA%+%AV%+%MAI%+%JUIN%+%JU%+%AO%+30
    SET /A OC=%JA%+%FE%+%MA%+%AV%+%MAI%+%JUIN%+%JU%+%AO%+%SE%+31
    SET /A NO=%JA%+%FE%+%MA%+%AV%+%MAI%+%JUIN%+%JU%+%AO%+%SE%+%OC%+30
    
    SET J1=%date:~0,2%
    SET M1=%date:~3,2%
    SET A1=%date:~6,4%
    SET DA=%A1%-%M1%-%J1%
    SET DAbis=%date%
    
    SET /A J1=%date:~0,2%
    SET /A M1=%date:~3,2%
    SET /A A1=%date:~6,4%
    
    SET MemoErreurDate=OK
    
    REM 1er test date
    IF NOT EXIST Backup_date.txt (
    	Set MemoErreurDate=Absence de fichier Backup_date.txt : une nouvelle copie va etre generee.
    	SET OldDate=2000/01/01
    	GOTO LOOP1
    )
    
    SET OldDate=2000/01/01
    FOR /f "delims=" %%i IN ('TYPE Backup_date.txt') DO SET OldDate=%%i
    
    SET /A J2=%OldDate:~8,2%
    SET /A M2=%OldDate:~5,2%
    SET /A A2=%OldDate:~0,4%
    
    REM 2ème test date
    SET /A Test2=0
    IF "%A2%" EQU "" SET /A Test2=1
    IF "%M2%" EQU "" SET /A Test2=1
    IF "%J2%" EQU "" SET /A Test2=1
    IF %Test2% EQU 1 (
    			SET MemoErreurDate=Date [%OldDate%] de la copie precedente inexploitable : une nouvelle copie va etre generee.
    			SET OldDate=2000/01/01
    			GOTO LOOP1
    )
    IF %A2% EQU 0 SET /A Test2=1
    IF %M2% EQU 0 SET /A Test2=1
    IF %J2% EQU 0 SET /A Test2=1
    IF %Test2% EQU 1 (
    			SET MemoErreurDate=Date [%OldDate%] de la copie precedente inexploitable : une nouvelle copie va etre generee.
    			SET OldDate=2000/01/01
    			GOTO LOOP1
    )
    
    REM 3ème test date - Contenu fichier vide
    IF "%OldDate%" EQU "2000/01/01" (
    	SET MemoErreurDate=Contenu du fichier Backup_date.txt vide : une nouvelle copie va etre generee.
    	GOTO LOOP1
    )
    
    SET /A J2=%OldDate:~8,2%
    IF %J2:~0,1% EQU 0 SET /A J2=%J2:~1,1%
    SET /A J2=%J2%
    SET /A M2=%OldDate:~5,2%
    IF %M2:~0,1% EQU 0 SET /A M2=%M2:~1,1%
    SET /A M2=%M2%
    SET /A A2=%OldDate:~0,4%
    
    IF %M1% EQU 1 SET /A NBJ1=0
    IF %M1% EQU 2 SET /A NBJ1=%JA%
    IF %M1% EQU 3 SET /A NBJ1=%FE%
    IF %M1% EQU 4 SET /A NBJ1=%MA%
    IF %M1% EQU 5 SET /A NBJ1=%AV%
    IF %M1% EQU 6 SET /A NBJ1=%MAI%
    IF %M1% EQU 7 SET /A NBJ1=%JUIN%
    IF %M1% EQU 8 SET /A NBJ1=%JU%
    IF %M1% EQU 9 SET /A NBJ1=%AO%
    IF %M1% EQU 10 SET /A NBJ1=%SE%
    IF %M1% EQU 11 SET /A NBJ1=%OC%
    IF %M1% EQU 12 SET /A NBJ1=%NO%
    
    IF %M2% EQU 1 SET /A NBJ2=0
    IF %M2% EQU 2 SET /A NBJ2=%JA%
    IF %M2% EQU 3 SET /A NBJ2=%FE%
    IF %M2% EQU 4 SET /A NBJ2=%MA%
    IF %M2% EQU 5 SET /A NBJ2=%AV%
    IF %M2% EQU 6 SET /A NBJ2=%MAI%
    IF %M2% EQU 7 SET /A NBJ2=%JUIN%
    IF %M2% EQU 8 SET /A NBJ2=%JU%
    IF %M2% EQU 9 SET /A NBJ2=%AO%
    IF %M2% EQU 10 SET /A NBJ2=%SE%
    IF %M2% EQU 11 SET /A NBJ2=%OC%
    IF %M2% EQU 12 SET /A NBJ2=%NO%
    
    SET /A DiffDate=(%A1%-%A2%)*365+(%NBJ1%-%NBJ2%)+(%J1%-%J2%)
    
    REM 4ème test date
    SET /A A3=%A1%+1
    SET Test4=VIDE
    IF %A2% LSS 2016 SET Test4=Annee
    IF %A2% GTR %A3% SET Test4=Annee
    IF %M2% LSS 1 SET Test4=Mois
    IF %M2% GTR 12 SET Test4=Mois
    IF %J2% LSS 1 SET Test4=Jour
    IF %J2% GTR 31 SET Test4=Jour
    IF "%Test4%" NEQ "VIDE" (
    	SET MemoErreurDate=%Test4% de la date [%OldDate%] de copie precedente inexploitable : une nouvelle copie va etre generee.
    	SET OldDate=2000/01/01
    	GOTO LOOP1
    )
    
    REM 5ème test date
    IF %DiffDate% LSS 0 (
    	SET MemoErreurDate=Date [%OldDate%] de la copie precedente incoherente : une nouvelle copie va etre generee.
    	SET OldDate=2000/01/01
    	GOTO LOOP1
    )
    
    REM 6ème test date
    IF %DiffDate% LSS 7 (
    	ECHO.
    	ECHO Precedente copie realisee il y a moins d'une semaine : pas de une nouvelle a generer.
    	SET /A $AbsRep2=1
    	GOTO SORTIE_PROGRAMME
    )
    
    ECHO.
    ECHO Precedente copie realisee il y a %DiffDate% jours : une nouvelle va etre generee.
    
    REM -------------------------------------------------------------------------------------------------------------
    REM *** Cas de l'absence d'info concernant la date de la copie précédente ***
    
    :LOOP1
    
    IF "%MemoErreurDate%" NEQ "OK" (
    	ECHO.
    	ECHO %MemoErreurDate%
    )
    
    REM -------------------------------------------------------------------------------------------------------------
    REM *** Ecrire la date de la copie dans un fichier sauvegarde ***
    
    ECHO.
    ECHO Ecriture de la date de la copie dans le fichier Backup_date.txt
    ECHO %DA%> Backup_date.txt
    
    :SORTIE_PROGRAMME
    
    PAUSE

Discussions similaires

  1. comment creer format date pour variable
    Par ALEA001 dans le forum Débutez
    Réponses: 5
    Dernier message: 21/07/2011, 09h39
  2. comment forcer le format date dans une requête
    Par chauvex99 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/07/2007, 09h49
  3. Tester un format date
    Par nnasser dans le forum Général Python
    Réponses: 2
    Dernier message: 01/04/2007, 19h13
  4. Réponses: 2
    Dernier message: 08/09/2006, 10h07
  5. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18

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