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 :

Comparer deux formats de date


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Points : 13
    Points
    13
    Par défaut Comparer deux formats de date
    Bonjour à tous !

    J'ai développé un petit script afin de vérifier la version de l'antivirus, pour voir s'il se met bien à jour ou non.
    Je mets dans une variable la date de la version actuelle issue d'une clé dans la base de registre, correspondant à l'antivirus, et j'aimerai la comparer à la date du jour dans un premier temps.
    Problème, car d'un côté, la date de la clé est sous le format "16-mars-2010", et d'un autre côté, %date% renvoie "16/03/2010". Du coup, je ne sais pas comment comparer les deux...de manière simple.

    Je pense qu'il faut déjà commencer par séparer le jour / mois / année, mais après, à part faire 12 correspondances 01 -> janvier, 02 - février, etc, je ne vois pas trop comment faire...

    Voici mon bout de code :

    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
    @echo off
    REM -------------------------------------------------------------------
    REM --- CheckDat.bat
    REM -------------------------------------------------------------------
    @SET sdat=None
    @SET seng=None
    @SET svdate=None
    @set /A J=%date:~5,2%
    @set /a M=%date:~8,2%
    @set /a A=%date:~11,4%
    @SET datkey=None
    REM -------------------------------------------------------------------
    REM --------  DAT Version From This Computer --------------  
    REM -------------------------------------------------------------------
    REM ---- Engine Version
    REM -------------------------------------------------------------------
    @echo szEngineVer	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szEngineVer > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set seng=%%a
    REM -------------------------------------------------------------------
    REM ---- Dat File Version
    REM -------------------------------------------------------------------
    @echo szVirDefVer	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefVer  > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set sdat=%%a
    REM -------------------------------------------------------------------
    REM ---- Dat Date
    REM -------------------------------------------------------------------
    @ECHO szVirDefDate	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefDate  > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3,4,5 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set svdate=%%a-%%b-%%c
    REM -------------------------------------------------------------------
    REM ---- Date Reference
    REM -------------------------------------------------------------------
    REM ...
    REM ...
    REM ---------------------------------------------------------------------
    REM ---- Cleanup
    REM ---------------------------------------------------------------------
    @DEL c:\nsclientplus\scripts\_temp.txt
    REM ---------------------------------------------------------------------
    REM ----------------------------- Test----------------------------------
    REM ---------------------------------------------------------------------
    @IF NOT %date%==%dateref% goto NOTOK
    @echo OK %date% %time% found : %seng% / %sdat% / %svdate% 
    @exit 0
    :NOTOK
    @echo CRITICAL %date% %time% found : %seng% / %sdat% / %svdate%
    @exit 2
    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance !!

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Je pense quevous allez être obligé de comparer les groupes de caractères (Jour/Mois et année)un par un.
    Pour convertir la date sous un autre format, je pense qu'effectivement, tu es obligé de faire les 12 comparaisons.
    Il ne me semble pas qu'il y est quelque chose de prédéfini.

    Cordialement,
    Christophe
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par manu7762323 Voir le message
    Bonjour à tous !

    J'ai développé un petit script afin de vérifier la version de l'antivirus, pour voir s'il se met bien à jour ou non.
    Je mets dans une variable la date de la version actuelle issue d'une clé dans la base de registre, correspondant à l'antivirus, et j'aimerai la comparer à la date du jour dans un premier temps.
    Problème, car d'un côté, la date de la clé est sous le format "16-mars-2010", et d'un autre côté, %date% renvoie "16/03/2010". Du coup, je ne sais pas comment comparer les deux...de manière simple.

    Je pense qu'il faut déjà commencer par séparer le jour / mois / année, mais après, à part faire 12 correspondances 01 -> janvier, 02 - février, etc, je ne vois pas trop comment faire...

    Voici mon bout de code :

    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
    @echo off
    REM -------------------------------------------------------------------
    REM --- CheckDat.bat
    REM -------------------------------------------------------------------
    @SET sdat=None
    @SET seng=None
    @SET svdate=None
    @set /A J=%date:~5,2%
    @set /a M=%date:~8,2%
    @set /a A=%date:~11,4%
    @SET datkey=None
    REM -------------------------------------------------------------------
    REM --------  DAT Version From This Computer --------------  
    REM -------------------------------------------------------------------
    REM ---- Engine Version
    REM -------------------------------------------------------------------
    @echo szEngineVer	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szEngineVer > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set seng=%%a
    REM -------------------------------------------------------------------
    REM ---- Dat File Version
    REM -------------------------------------------------------------------
    @echo szVirDefVer	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefVer  > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set sdat=%%a
    REM -------------------------------------------------------------------
    REM ---- Dat Date
    REM -------------------------------------------------------------------
    @ECHO szVirDefDate	None	None > c:\nsclientplus\scripts\%1_temp.txt
    @c:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefDate  > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3,4,5 delims=	 " %%a IN (c:\nsclientplus\scripts\%1_temp.txt) do set svdate=%%a-%%b-%%c
    REM -------------------------------------------------------------------
    REM ---- Date Reference
    REM -------------------------------------------------------------------
    REM ...
    REM ...
    REM ---------------------------------------------------------------------
    REM ---- Cleanup
    REM ---------------------------------------------------------------------
    @DEL c:\nsclientplus\scripts\_temp.txt
    REM ---------------------------------------------------------------------
    REM ----------------------------- Test----------------------------------
    REM ---------------------------------------------------------------------
    @IF NOT %date%==%dateref% goto NOTOK
    @echo OK %date% %time% found : %seng% / %sdat% / %svdate% 
    @exit 0
    :NOTOK
    @echo CRITICAL %date% %time% found : %seng% / %sdat% / %svdate%
    @exit 2
    Est-ce que quelqu'un pourrait m'aider ?

    Merci d'avance !!
    pour extraire le jour littéral
    regarde cette discussion

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2008
    Messages : 47
    Points : 13
    Points
    13
    Par défaut
    Et voilà

    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
    @echo off
    REM -------------------------------------------------------------------
    REM --- CheckDat.bat
    REM -------------------------------------------------------------------
    @SET sdat=None
    @SET seng=None
    @SET svdate=None
    @SET Dateref=None
    @SET datkey=None
    @SET JOUR=None
    @SET MOIS=None
    @SET ANNEE=None
    REM -------------------------------------------------------------------
    REM -----------------  DAT Version From This Computer -----------------  
    REM -------------------------------------------------------------------
    REM Engine Version
    REM -------------------------------------------------------------------
    @echo szEngineVer	None	None > C:\nsclientplus\scripts\%1_temp.txt
    @C:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szEngineVer > c:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (C:\nsclientplus\scripts\%1_temp.txt) do set seng=%%a
    REM -------------------------------------------------------------------
    REM Dat File Version
    REM -------------------------------------------------------------------
    @echo szVirDefVer	None	None > C:\nsclientplus\scripts\%1_temp.txt
    @C:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefVer  > C:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3 delims=	 " %%a IN (C:\nsclientplus\scripts\%1_temp.txt) do set sdat=%%a
    REM -------------------------------------------------------------------
    REM Dat Date
    REM -------------------------------------------------------------------
    @ECHO szVirDefDate	None	None > C:\nsclientplus\scripts\%1_temp.txt
    @C:\nsclientplus\scripts\REG.exe QUERY "HKLM\SOFTWARE\Network Associates\TVD\VirusScan Enterprise\CurrentVersion" /v szVirDefDate  > C:\nsclientplus\scripts\%1_temp.txt
    @FOR /f "tokens=3,4,5 delims=	 " %%a IN (C:\nsclientplus\scripts\%1_temp.txt) do set svdate=%%a-%%b-%%c
    REM -------------------------------------------------------------------
    REM --------------------------Date Reference---------------------------
    REM -------------------------------------------------------------------
    @FOR /F "tokens=*" %%A IN ('DATE/T') DO FOR %%B IN (%%A) DO SET Dateref=%%B
    @ECHO %Dateref% > C:\nsclientplus\scripts\dateref.txt 
    @FOR /F "tokens=1,2,3 delims=/" %%I IN (C:\nsclientplus\scripts\dateref.txt) DO (
    SET JOUR=%%I
    SET MOIS=%%J
    SET ANNEE=%%K)
    REM --- Autoriser la MAJ avec 1 jour de retard
    @SET /A JOUR=%JOUR%-1
    REM -------------------------------------------------------------------
    REM Conversion du mois en lettres pour correspondre  la valeur du 
    REM registre pour VirusScan afin de pouvoir comparer
    REM -------------------------------------------------------------------
    @IF "%MOIS%"=="01" SET MOIS=janvier
    @IF "%MOIS%"=="02" SET MOIS=fevrier
    @IF "%MOIS%"=="03" SET MOIS=mars
    @IF "%MOIS%"=="04" SET MOIS=avril
    @IF "%MOIS%"=="05" SET MOIS=mai
    @IF "%MOIS%"=="06" SET MOIS=juin
    @IF "%MOIS%"=="07" SET MOIS=juillet
    @IF "%MOIS%"=="08" SET MOIS=aout
    @IF "%MOIS%"=="09" SET MOIS=septembre
    @IF "%MOIS%"=="10" SET MOIS=octobre
    @IF "%MOIS%"=="11" SET MOIS=novembre
    @IF "%MOIS%"=="12" SET MOIS=decembre
    @SET Dateref=%JOUR%-%MOIS%-%ANNEE%
    REM 
    REM ---------------------------------------------------------------------
    REM ---- Cleanup
    REM ---------------------------------------------------------------------
    @DEL C:\nsclientplus\scripts\_temp.txt
    @DEL C:\nsclientplus\scripts\dateref.txt
    REM ---------------------------------------------------------------------
    @IF NOT %svdate%==%Dateref% GOTO NOTOK
    @echo OK %Dateref% found : %seng% / %sdat% / %svdate%
    @exit 0
    :NOTOK
    @echo CRITICAL %Dateref% found : %seng% / %sdat% / %svdate%
    @exit 2
    Ca fonctionne.

    Mais, juste par curiosité, y avait-il plus simple ?

Discussions similaires

  1. Comparer deux dates au format : mid(date, 1, 10)
    Par Superkoala42 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/07/2014, 08h48
  2. Comparer deux dates format jj/mm/aaaa
    Par Erwy dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h11
  3. Comparer deux dates au format TEXT
    Par ptilemare dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/07/2010, 22h39
  4. Comparer deux plages de date
    Par kyra2778 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/11/2009, 12h14
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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