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 :

Comparaison de dates - Batch


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 116
    Par défaut Comparaison de dates - Batch
    Bonjour, je voudrais comparer les dates de deux fichiers en batch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DIR /TW %output_dir%\%%~nF.txt  | find "/" > %%~nF_tmp_.txt
    	FOR /F "tokens=1-4 delims=/ " %%i IN (%%~nF_tmp_.txt) DO SET datetmp=%%k%%j%%i
    	DEL %%~nF_tmp_.txt
    	
    	DIR /TW %%F  | find "/" > %%~nF_tmp2_.txt
    	FOR /F "tokens=1-4 delims=/ " %%i IN (%%~nF_tmp2_.txt) DO SET datetmp2=%%k%%j%%i
    	DEL %%~nF_tmp2_.txt	
    	IF %datetmp% GTR %datetmp2% GOTO lEof
    Le problème est le suivant :

    Je lance le script (via l'invite de commande), il me dit "GOTO était inattendu".

    Je retire cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF %datetmp% GTR %datetmp2% GOTO lEof
    Le script fonctionne a nouveau, et quand je la remet, exactement au même endroit, le script fonctionne ! Si je quitte l'invite de commande ça ne marchera à nouveau plus et je devrais refaire la même manip. Pourquoi dois-je supprimer et remettre la ligne a chaque fois ?

    Cordialement,

    Edit : script réel bien plus long mais non utile ici.

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 116
    Par défaut
    Bon il semblerait que si on met des guillemets autour des variables du IF ça marche de suite.

    Mais ça n'explique pas pourquoi sans les guillemets ça fonctionne avec une manipulation sur-citée :/

  3. #3
    Invité
    Invité(e)
    Par défaut Reponse
    Ce n'est plus pour toi que je réponds cher jbeaussier, c'est pour les futurs lecteurs qui nous liront :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF %datetmp% GTR %datetmp2% GOTO lEof
    Cette ligne convertit les dates en nombre, ce qui induit un résultat faux; perte du sens, de plus si ta date commence par '0' cela pensera en octal, passant d'une comparaison litérale de chaine de caractères en opération numérique.

    > C'est marqué dans le help du IF et SET du DOS.

    Les guillemets sécurisent les chaines pour ne pas être transformées en nombres.

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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