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 :

Poursuite du programme après un redémarage


Sujet :

Scripts/Batch

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut Poursuite du programme après un redémarage
    Bonjour,

    Je souhaite réaliser un programme BAT donc l’exécution ne serait pas arrêtée par un redémarrage.
    Le but est d'installer (dans l'ordre, sans trop se faire ch..r) les mises à jour de Windows 7 à partir d'une sauvegarde locale des fichiers de mises à jours Microsoft.

    J'ai essayé les commandes "SHUTDOWN" sans succès:
    -le programme BAT est fermé

    Auriez-vous une solution à me proposer?

  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
    Salut,

    Tu as plusieurs possibilités, celles qui me viennent en tête sont:
    Inscrire dans le registre "au prochain reboot tu exécutes tel .bat"
    ou
    Placer ton .bat dans le dossier "Démarrage" de tous les utilisateurs.

    Registre:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "Un_Titre_De_Cle" /t REG_SZ /d "CHEMIN_VERS_TON_SCRIPT\TON_SCRIPT.bat" /f

    Sinon coller dynamiquement dans:
    "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"
    ________________________________________________________________
    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
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse,
    mais si j'ai bien compris, les 2 solutions que tu me propose on l’inconvénient de faire redémarrer le programme au début et non de le laisser poursuivre.

    En langage plus clair, si je lui dis:
    ..., installation de la mise à jour 164, installation de la mise à jour 165,...
    En redémarrant, Le programme aura envie de reprendre à la mise à jour n°1.
    Sauf si j'utilise un système qui permet au programme de savoir à quelle étape il en est mais ça risque d'être assez lourd niveau programmation.
    Si possible, j'aurais préférer éviter ça.

    Le registre... il me semble que c'est un peu au dessus de mes compétences d'aller bidouiller dedans

  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
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    DevilSnake

    Tu peux mettre la valeur de la mise MAJ dans un fichier txt.

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 165 >state.txt
    code d'installation de la MAJ 165
    et lorsque tu reboot tu sais que la 165 est installé


    C'est la seul solution que j'entrevoie

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    il me semble qu'on peut afficher un fichier texte à partir des commandes "BAT" mais pas le lire pour le réutiliser
    (En tout cas, je ne sais pas le faire)

    Dans ce cas, cela vaudrais dire qu'il me faudrait un petit programme d'initialisation qui me fournirait une variable que je peux réutiliser ensuite?
    du style

    echo set %state%=165>initialisation.bat
    puis exécution initialisation.bat
    puis GOTO %state%

    Devilsnake, que veux-tu dire par "coller dynamiquement"?
    (ps: bonne nuit à tous)

  6. #6
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    Exactement, (Et tu peux facilement lire le contenue d'un fichier en bat) Donc :

    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
    @echo off
    if exist "state.txt" (
    ::Si il existe on récupère la valeur dans state.txt
      set /p $state=<state.txt
    :: et on va dans :next
      goto:next 
    )
    :: On set $state a 1 si state.txt n'existe pas 
    set "$state=1"
    
    :next
    ::On incrèmente l'état de state de 1
    set /a $NewState=%$state%+1
    ::On écrie la nouvelle valeur dans state.txt
    echo %$NewState%>state.txt
    ::On lançe l'actualisation correspondante
    MAJ_%$state%.bat
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    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
    Citation Envoyé par sachadee Voir le message
    Salut,

    DevilSnake
    Dit donc toi, tu complotes contre moi pendant mon sommeil!
    N'as-tu pas honte?!

    Quitte à inscrire la valeur du nombre de MAJ quelque part, autant créer une clé de registre temporaire pour le coup, le .txt je l'utilise si j'ai beaucoup d'infos à enregistrer.

    Citation Envoyé par Old_Win Voir le message
    Devilsnake, que veux-tu dire par "coller dynamiquement"?
    En gros dans ton script tu copies ton .bat où tu veux via XCOPY/COPY/ROBOCOPY/etc...

    J'aimerais bien voir c'est ton code actuel.

    Aller debout feignasses!
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Y a ceux qui se lèvent à 7h et ceux qui se couchent à 1h...

    Le programme actuel, bien qu'encore très incomplet fait 4Ko, donc surement trop long pour être posé sur le fil d'un forum.
    S'il est possible de faire un lien téléchargeable sur le forum, merci de m'indiquer comment faire.

    J'ai effectivement prévu de créer un fichier log, avec plus de 200 mises à jour.

    @sachadee
    Merci pour l'info.
    ton idée de nommer les mises à jours MAJ_%state%.Bat est bien,
    mais pour que tout reste clair je préfère conserver le nom original des mises à jour Microsoft
    <version Windows>-<n° de mise à jour KB>-<64bit ou 32bit>.MSU
    (*.MSU étant l’extension des fichiers "exécutables autonomes" de mise à jour Microsoft)

    tan pis, je vais être obligé d'écrire beaucoup plus de lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    set %state%=<state.txt
    GOTO %state%
    :001
    %state%+1=%state%
    echo %state%>state.txt
    echo KB0029>>SP2.log
    rem j’écris dans le journal que je lance la mise à jour KB0029
    win6.1-KB0029-64.MSU
    GOTO END
    :002
    rem ainsi de suite...
    En gros dans ton script tu copies ton .bat où tu veux via XCOPY/COPY/ROBOCOPY/etc...
    Il serait peut être plus intéressant que je crée un "programme d'appel" (si ça se dit?) dans le dossier "démarrage"
    en effet:
    - lors qu'un double clic, le programme de mise à jour ne démarre pas automatiquement (pour éviter les fausses manœuvres) du coup il doit être démarré avec l'instruction "/GO"
    -pour simplifier/alléger l’écriture c'est plus facile si le fichier BAT lance les fichier MSU qui sont dans le même répertoire

  9. #9
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ton idée de nommer les mises à jours MAJ_%state%.Bat est bien,
    mais pour que tout reste clair je préfère conserver le nom original des mises à jour Microsoft
    <version Windows>-<n° de mise à jour KB>-<64bit ou 32bit>.MSU
    (*.MSU étant l’extension des fichiers "exécutables autonomes" de mise à jour Microsoft)
    Le nom des MAJ microdoft ont une logique (genre 001,002,003,004,...) ?

    si oui t'as pas besoin d'écrire un label pour chaque MAJ.

    Ou sinon tu peux setter une variable de reference avec le No de toute les MAJ :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set "$MAJs=09876 65467 87666 23242"
    et ensuite on check state.txt et on lançes la ref suivante de notre liste
    ainsi tu te préocupes juste de la variable %$Majs% que tu incrèmentes à chaque nouvelle MAJ.

    Facile et pratique.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Il n'y pas de logique de ce style.

    Par contre, je ne comprends pas bien ta syntaxe avec set, les espaces veulent dire que c'est une suite? (que le programme devrait suivre?)

  11. #11
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    oui exactement :

    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
    @echo off
    setlocal enabledelayedexpansion
    
    ::Notre liste de MAJ disponible
    set "$ref=8787 6754 3456 8900"
    
    if exist "state.txt" (
    ::Si il existe on récupère la valeur dans state.txt
      set /p $state=<state.txt
    :: et on va dans :next
      goto:next 
    )
    :: On set $state a 8787 (première valeur de nos MAJ) si state.txt n'existe pas 
    set "$state=8787"
    
    :: on boucle sur la liste pour récuperer la prochaine MAJ à faire :
    
    :next
    set $sw=0
    for %%a in (%$ref%) do (
        if !$sw!==1 (
               set "$New_MAJ=%%a"
               goto:maj
        )
        if "%%a"=="%$state%" (
                 set /a $sw+=1)
    )
    echo Aucune MAJ disponible !!!
    exit/b
    
    :maj
    ::On écrie la nouvelle valeur dans state.txt
    echo %$New_MAJ%>state.txt
    echo On install la MAJ %$New_MAJ%
    Tu peux tester ce code tel quel et tu verras qu'il va sauter a chaque execution une valeur dans notre liste $Ref.

    Tu peux si tu le souhaite mettre cette valeur dans une clé de registre comme proposé par DevilSnake....

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Hou! Super.
    Je vais apprendre des choses ici

    Je vais prendre le temps de réfléchir un peu plus pour bien comprendre la structure du programme,
    mais je vais déjà te poser quelques questions
    -ligne 2, simplement, quel est le rôle de "enabledelayedexpansion"? (j'ai pas compris ce que me disait l'aide de l'éditeur "DOS")
    -ligne 5. pour set peut-on faire une liste aussi grande que l'on veut? (du style 300 valeurs différentes)
    -quel est la différence entre $variable et %variable% ?

  13. #13
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    le : setlocal enabledelayedexpansion et pour activer l'expansion retardée de variable qui change de valeur dans une boucle.

    Essaye de rajouter ceçi sur la première ligne du FOR :

    for %%a in (%$ref%) do (echo %$sw% !$sw!

    et tu verras que la variable %$sw% reste à 0, alors que la même variable étendue !$sw! elle prend la valeur correcte (1) dès la 2éme itération.

    Pour la taille des listes tu est limité à la taille maximale d'une ligne en BAT (8192 Octets)

    j'ai fait un test et j'arrive à 909 élement de 8 octets (soit 7272 Octets) dans une liste vu que les espaces sont également compter on est juste.
    donc pour tes 300 élements ça devrait le faire si tes éléments ne dépasse pas ((8192-300)/300) 26 caractères. Sinon on peu boucler sur plusieurs variable pour contourner le problème.

    Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    setlocal enabledelayedexpansion
    for /l %%a in (1,1,1000) do (
       set $l=!$l! 12345678
    )
    
    for %%a in (!$l!) do set /a $c+=1 
    
    echo !$c!
    Pour le $ devant les variables c'est une habitude personnel que j'ai prise en codant en Autoit et PHP donc pas de soucis

    var ou $var n'ont pas de différence technique
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Pour la longueur des boucles cela suffira amplement, il y a 8 caractères + 1 espace
    Comme tu le dit on peut faire plusieurs boucles avec un petit message entre chaque boucle du style "50 mises à jour lancées. 150 restantes"

    Je dois donc écrire "setlocal enabledelayedexpansion" avant chaque boucle "For", c'est bien ça?

    Je vais réécrire l'usine à gaz que j'ai commencé pour vérifier la présence des fichiers mises à jour, en essayant d'utiliser la même structure que toi et je te demanderais confirmation.

    En effet, j'ai prévu une option sur le programme pour qu'il vérifie la présence de tout les fichiers de mises à jour.

  15. #15
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    Je dois donc écrire "setlocal enabledelayedexpansion" avant chaque boucle "For", c'est bien ça?
    Non juste 1 fois en début de script.
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bon, apparemment, je me suis planté.
    Je ne comprends pas où est mon erreur

    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
    @echo off
    setlocal enabledelayedexpansion
    set log=1
    set lost=0
    set here=0
    set liste=KB2685811 KB2685813 KB2900986 KB954430 wxcz3
    
    for /l %%a in (%liste%) do (
      IF exist Windows6.1-%%a-x64.msu GOTO TEST_B1_OK
      echo %%a manquant
      if %log%==1 echo %%a manquant>>SP2_AL1-Test.log
      set /a lost=%lost%+1
      GOTO TEST_B1_END
      : TEST_B1_OK
      set /a here=%here%+1
      : TEST_B1_END
      )
    
    echo %lost% fichier(s) manquant(s)
    echo %here% fichier(s) present (s)
    pause

  17. #17
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    salut,

    pour boucler sur une liste il ne faut pas mettre le switch /L

    et habitues-toi à mettre tes labels en dehors de la boucle FOR :

    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
    @echo off
    setlocal enabledelayedexpansion
    set log=1
    set lost=0
    set here=0
    set liste=KB2685811 KB2685813 KB2900986 KB954430 wxcz3
    
    for %%a in (%liste%) do (
      IF exist "Windows6.1-%%a-x64.msu" GOTO TEST_B1_OK
      echo %%a manquant
      if %log%==1 echo %%a manquant>>SP2_AL1-Test.log
      set /a lost=%lost%+1
      GOTO TEST_B1_END
      )
    
    exit/b
    
    
     : TEST_B1_OK
      set /a here=%here%+1
    
     : TEST_B1_END
    
    echo %lost% fichier(s) manquant(s)
    echo %here% fichier(s) present (s)
    pause
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Bonsoir.

    et habitues-toi à mettre tes labels en dehors de la boucle FOR
    heu... Oui, mais là, ça marche pas.
    Dès qu'il voit un fichier, le programme va à l'étiquette "TEST_B1_OK" et il arrête sa boucle de test.

    Pour éviter les étiquettes dans la boucle, si c'est possible, comment utiliser IF et ELSE pour exécuter plusieurs commande?

    j'ai des difficultés avec l'instruction "do" et les parenthèses (perso, jamais utilisées en BAT, jusqu'à présent)
    peux-tu m'expliquer ou me renvoyer vers un lien qui explique ça?

    à quoi sert exit /B ?
    (sortie de boucle ou sortie de programme?)
    Pour lire les messages, il est préférable que la fenêtre "DOS" reste ouverte.

    hà! et si je veux que les accents passent bien, avec le bloc note Windows, j'encode sous quel format?

  19. #19
    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
    Points : 3 768
    Points
    3 768
    Par défaut
    Ne sachant pas exactement ce que tu cherches à faire, c'est un peu compliqué.

    Si tu trouve le fichier .msu ça veut dire quoi ? qu'il est déjà installé ?

    Je t'ai donné un exemple 100% fonctionnel assez facile a adapter.....
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  20. #20
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Septembre 2016
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Non, les fichiers *.MSU sont des "Package autonome Microsoft Update" que je conserve en sauvegarde.
    Normalement, il ne devraient être ni altérés ni supprimés (j’espère). C'est eux qui vont modifier les fichiers système.

    Effectivement, après une restauration (logicielle) à l'état d'usine, il est nécessaire de réinstaller toutes les mises à jours.
    Pour le moment, Windows 7 à encore accès à Windows Update, mais ça va pas durer éternellement (...)

    L'exemple que tu m'as donner pour faire une boucle "for" afin de lancer les programmes de mises à jours, un par un, avec un redémarrage entre chaque, est effectivement bon. Depuis le départ, je savais que c'est cette partie qui serait la plus compliquée et que je n'étais probablement pas capable de l'écrire sans aide. Mais avant de lancer la procédure de mise à jour, il me semble plus prudent de vérifier que l'ensemble des fichiers de mises à jour soient bien présents sur la sauvegarde, avant de lancer la mise à jour. surtout si on l'utilise dans 1 ou 2 ans.

    Donc ce que je voulais maintenant faire, pour la 1er partie du programme:
    -vérifier la présence de tous les fichiers
    -si des fichiers manquent, indiquer les mises à jour manquantes à l'écran
    -si des fichiers manquent et si un rapport est demandé, indiquer les mise à jour manquante dans un fichier log
    (sur une sauvegarde DVD, pas très utile d'écrire un rapport)
    -compter le nombre de fichier de mises à jours manquants
    -compter le nombre de fichier de mises à jours présents

    Pour cette 1er partie, j'ai commencé à écrire un truc (qui fonctionne pour l'instant) mais utiliser une boucle "for", comme tu l'as fait, me semble beaucoup plus léger que ce que j'ai fait.

    Voilà pour le récapitulatif complet.

Discussions similaires

  1. bug du programme apres utilisation de dialog
    Par avogadro dans le forum Delphi
    Réponses: 13
    Dernier message: 07/06/2006, 15h33
  2. Réponses: 2
    Dernier message: 05/06/2006, 16h53
  3. Afficher mon programme après réduction
    Par Coussati dans le forum Langage
    Réponses: 14
    Dernier message: 31/01/2006, 00h25
  4. démarrer un programme après tous les services
    Par chtiot dans le forum Langage
    Réponses: 8
    Dernier message: 05/11/2005, 06h45
  5. Lancer automatiquement un programme après connexion Internet
    Par sunshine dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 27/05/2005, 22h18

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