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 :

Différence de 2 nombres enregistrés dans un fichier


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Différence de 2 nombres enregistrés dans un fichier
    Bonjour à la Communauté,
    J'ai un problème sûrement très simple à résoudre mais sur lequel je plante comme un débutant (que je suis) :
    Dans un fichier texte "Fichier.txt" j'ai enregistré deux nombres dont l'ordre de grandeur est de 80 000 000 (ce sont des temps en millisecondes).
    Je cherche donc à réaliser un script .bat dont l'objet est de :
    - lire les deux enregistrement du fichier,
    - en extraire les deux nombres,
    - effectuer la soustraction du premier du second,
    - afficher le résultat.
    Après une multitude de tentatives à partir d'éléments trouvés dans divers forums, je sèche lamentablement.
    Si personne ne vient à mon secours, il ne me restera qu'à renoncer aux scripts si je ne suis même pas foutu de réaliser une soustraction à mon âge
    Merci déjà de m'avoir lu.
    Cordialement,
    Jean
    --

  2. #2
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Bonjour,
    Je ne vais pas réécrire tout le code car visiblement il vous manque simplement la partie calcul et affichage du résultat donc voici:

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @echo off&cls
    set premier=10
    set deuxieme=5
     
    set /a r=%premier%-%deuxieme% 
    echo %premier%-%deuxieme%=%r%
    pause

    Attention, le Batch semble ne pas prendre en compte les décimales!
    (mais il doit y avoir des petits outils pour sur internet)

    PS: la prochaine fois, merci de nous indiquer votre code.
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonjour devilsnake88 et merci de réagir à mon SOS,
    Citation Envoyé par devilsnake88 Voir le message
    Bonjour,
    Je ne vais pas réécrire tout le code car visiblement il vous manque simplement la partie calcul et affichage du résultat donc voici:
    Merci pour ce code mais ce n'est pas ce que je cherche. Mes deux nombre sont stockés sur un fichier texte. Je sais lire le fichier et afficher (par echo) mes deux nombres. Ce que je ne sais pas faire c'est comment affecter ces valeurs à deux variables pour en faire la différence.
    Voici le code :

    Code bat : 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
     
    REM oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    REM oo                      Ce que je sais faire :                            oo 
    REM oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
     
    @echo off&cls
    set temps1=56184057
    set temps2=56186080
     
    set /a delta=%temps2%-%temps1% 
    echo Delta Temps : %delta%
    pause
     
    REM oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    REM oo                   Ce que je ne sais pas faire :                        oo 
    REM oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    REM Script de lecture de deux nombres sur un fichier pour en calculer la différence
    REM Mes deux nombres temps1 et temps2 sont les deux enregistrements constituant
    REM le fichier "Temps.txt" 
     
    @echo off
    For /f "tokens=*" %%a In (Temps.txt) do (
    	echo %%a
    	REM ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    	REM oo Mes deux nombres s'affichent bien l'un sous l'autre.        oo
    	REM oo Mais Comment récupérer mes deux variables temps1 et temps2  oo
    	REM oo pour en calculer la différence ?                            oo
    	REM ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    )
    REM set /a delta=%temps2%-%temps1% 
    REM echo Delta Temps : %delta%
    pause
    exit

    Citation Envoyé par devilsnake88 Voir le message
    Attention, le Batch semble ne pas prendre en compte les décimales!
    (mais il doit y avoir des petits outils pour sur internet)
    Mes deux temps enregistrés sont issus de deux appels de %TIME% exprimés en millisecondes ce qui semble éliminer le problème des décimales.
    Encore merci pour ton intervention.
    Cordialement,
    Jean Le Brun
    --

  4. #4
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Est-ce que ceci fonctionne?
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off&cls
    setlocal ENABLEDELAYEDEXPANSION
     
    set varnumber=0
    for /F "tokens=1-2" %%A in (Temps.txt) do (
        SET /A varnumber=!varnumber! + 1
        set var!varnumber!=%%A
    )
    set /a delta=var1-var2
    echo Delta Temps : %delta%
    pause
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  5. #5
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    re et merci pour cette très promptevréponse,
    Citation Envoyé par devilsnake88 Voir le message
    Est-ce que ceci fonctionne?
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off&cls
    setlocal ENABLEDELAYEDEXPANSION
     
    set varnumber=0
    for /F "tokens=1-2" %%A in (Temps.txt) do (
        SET /A varnumber=!varnumber! + 1
        set var!varnumber!=%%A
    )
    set /a delta=var1-var2
    echo Delta Temps : %delta%
    pause
    Excellemment bien.
    Le "setlocal ENABLEDELAYEDEXPANSION", je m'en suis servi pour le script constituant le fichier mais dans la récupération des données, même avec çà, je ne m'en étais pas sorti
    grâce à vous, je viens de piger comment créer un index pour aller fouiller dans une variable dimensionnée.
    Merci beaucoup pour ce cours qui est sans doute pour vous de base mais qui, à moi, ouvre d'autres horizons.

    Puis-je svp vous soumettre mon script qui établi mon fichier de données pour savoir s'il est correct (il marche ... mais ... ?
    Voir ci-dessous :
    Code bat : 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
     
    @ECHO OFF
    setlocal enableDelayedExpansion
     
     	FOR /F "usebackq tokens=1-4 delims=: " %%A in (`echo %TIME%`) DO (
    	set heure=%%A
    	set Minut=%%B
    	set Secon=%%C
    	Set milli=%%D
     	)
    	set /a temps_debut_milli=heure*3600000+Minut*60000+Secon*1000+milli
    	ECHO !temps_debut_milli!>>Temp_JL.txt
    pause
     	FOR /F "usebackq tokens=1-4 delims=: " %%A in (`echo %TIME%`) DO (
    	set heure=%%A
    	set Minut=%%B
    	set Secon=%%C
    	Set milli=%%D
     	)
    	set /a temps_fin_milli=heure*3600000+Minut*60000+Secon*1000+milli
    	ECHO !temps_fin_milli!>>Temp_JL.txt
     
    	set /a Dure=!temps_fin_milli! - !temps_debut_milli!
    	echo "Durée en ms : " !dure!
    endlocal
    pause
    exit
    J'espère rester dans le sujet. Sinon, j'ouvrirais un nouveau fil.
    Merci encore.
    Cordialement,
    Jean Le Brun
    --

  6. #6
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Du moment que ça fonctionne c'est tout ce qui m'importe.
    Je pense juste à une petite chose, si vous exécutez le script 5 fois vous allez écrire 10 lignes dans le fichier texte.
    Si vous n'avez besoin que de deux lignes je peux vous proposer une technique extrêmement complexe pour ne toujours garder que deux lignes dans le fichier texte.

    Attention les yeux!
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rem Votre code actuel:
    echo !temps_debut_milli!>>Temp_JL.txt
    rem Le code modifié:
    echo !temps_debut_milli!>Temp_JL.txt

    Vous l'aurez compris, ">" écrase le contenu du fichier dans lequel il doit écrire et ">>" ajoute simplement à la suite.
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  7. #7
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,
    Citation Envoyé par devilsnake88 Voir le message
    Du moment que ça fonctionne c'est tout ce qui m'importe.
    Je pense juste à une petite chose, si vous exécutez le script 5 fois vous allez écrire 10 lignes dans le fichier texte.
    Si vous n'avez besoin que de deux lignes je peux vous proposer une technique extrêmement complexe pour ne toujours garder que deux lignes dans le fichier texte.

    Attention les yeux!
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    rem Votre code actuel:
    echo !temps_debut_milli!>>Temp_JL.txt
    rem Le code modifié:
    echo !temps_debut_milli!>Temp_JL.txt

    Vous l'aurez compris, ">" écrase le contenu du fichier dans lequel il doit écrire et ">>" ajoute simplement à la suite.
    Merci pour ce conseil.
    Comme je confierai peut-être ce code à des copains et afin de ne pas polluer leurs bécanes, je comptais "tuer" (kill) le fichier en fin de procédure ?
    Bonne soirée et encore merci.
    Cordialement,
    jl
    --

  8. #8
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Supprimer le fichier texte ou le fichier texte ET le fichier bat?
    Vous avez déjà le code pour faire ça?

    PS: Si le sujet est résolu, merci de changer le statut en résolu
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/09/2014, 19h38
  2. Réponses: 0
    Dernier message: 15/11/2011, 15h42
  3. [LG]Enregistrements dans un fichier
    Par ticoude dans le forum Langage
    Réponses: 1
    Dernier message: 26/11/2004, 18h33
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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