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 :

Problème avec ERRORLEVEL


Sujet :

Scripts/Batch

  1. #1
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut Problème avec ERRORLEVEL
    Bonjour,
    Je suis en train de terminer l'empaquetage de mon application MS-Access et pour ce faire, j'ai besoin de savoir si Access est installé sur le poste de mon client ou pas...
    Ceci afin d'installer automatiquement, soit la version sans le runtime (si Access est présent), soit la version avec le Runtime (si Access n'est pas installé)
    Je me casse les dents depuis quelques temps déjà avec mon fichier batch et malgré de nombreuses recherches, nombreux essais, je dois m'avouer vaincu et demander de l'aide.
    Voici mon 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
    @echo off
    
    REM Attribution du nom du disque courant (de la racine) à la variable "fold"  (C:, D:, ou autre)
    setlocal
    @for %%n in (%0) do set fold=%%~dpn
    chcp 1252
    
    
    REM Tentative d'ouvrir "base.accdb" (bdd vide) pour tester la présence ou non de MS-Access sur le poste du client
    Start /WAIT msaccess.exe %fold%\Base.accdb 2>/dev/null
    
    REM Interception de l'erreur:
    REM 1. S'il n'y a pas d'erreur on lance l'installation sans runtime
    REM 2. Si une erreur est interceptée, on installe avec le runtime
    
    if %ERRORLEVEL% NEQ 0 (
        goto :batch2
        ) else (
        goto :batch1
        )
    
    REM Installation sans runtime
    :batch1
    cls
    call %fold%\Acc\Setup.exe
    cls
    goto :fin
    
    
    REM Installation avec le runtime
    :batch2
    cls
    call %fold%\Rnt\Setup.exe
    cls
    goto :fin
    
    
    :fin
    endlocal
    exit
    Quelqu'un(e) pour m'expliquer ce qui cloche dans ce code ?
    En effet, le ERRORLEVEL me semble totalement inopérant...
    Un grand, grand merci d'avance :-)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  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
    Points : 3 768
    Points
    3 768
    Par défaut
    Utilise la clé de registre de ACCESS ça sera beaucoup plus stable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
    
    reg.exe QUERY HKLM\SOFTWARE\Classes\Access.Application.14\shell\Open\command /ve && goto:batch1 || goto:batch2
    
    :batch1
    Echo Access est deja sur ceette machine
    exit/b
    
    batch2
    echo Access n'est pas sur cette machine
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #3
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Super génial, merci beaucoup !!!
    Je vais essayer cela tout de suite :-)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  4. #4
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Alors...
    J'ai recopié ton code en modifiant, dans un premier temps, "Access.Application.14" en "...16" et je l'ai lancé
    De façon très fugace, j'ai vu s'ouvrir et se refermer aussitôt la petite fenêtre noire de la console.

    Vu que je ne savais pas du tout ce qui se passait, j'ai encore modifié ton code en demandant de copier un fichier en le renommant de deux façons différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off
    
    reg.exe QUERY HKLM\SOFTWARE\Classes\Access.Application.16\shell\Open\command /ve && goto:batch1 || goto:batch2
    
    :batch1
    Copy C:\Essais\A.txt C:\Essais\Acc.txt
    exit/b
    
    batch2
    Copy C:\Essais\A.txt C:\Essais\Rnt.txt
    Malheureusement, rien ne se passe...
    Je ne sais pas si c'est juste mais j'ai sauvé ce code dans un fichier *.bat pour le lancer
    Si tu as encore la bonté de te pencher sur "mon cas", ce serait vraiment génial !
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  5. #5
    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,

    si tu executes juste ça dans le CMD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reg.exe QUERY HKLM\SOFTWARE\Classes\Access.Application.16\shell\Open\command /ve
    il te retourne quelque chose comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Access.Application.16\shell\Open\command
        (padrão)    REG_SZ    "C:\Program Files (x86)\Microsoft Office\Office16\MSACCESS.EXE" /NOSTARTUP "%1" %2 %3 %4 %5 %6 %7 %8 %9

    test comme ça avec un pause :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
    
    reg.exe QUERY HKLM\SOFTWARE\Classes\Access.Application.16\shell\Open\command /ve && goto:batch1 || goto:batch2
    
    :batch1
    Echo Access est deja sur ceette machine
    pause
    exit/b
    
    batch2
    echo Access n'est pas sur cette machine
    pause
    et regarde ce qui ce passe !
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  6. #6
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    Oui, comme ça, ça fonctionne !
    Merci beaucoup de ton aide, pour moi c'est ok !
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] Problème avec errorlevel
    Par nicnictout dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 02/08/2013, 11h37
  2. [Batch] problème avec errorlevel
    Par vbcasimir dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 25/09/2009, 12h55
  3. Problème avec l'utilisation de %ERRORLEVEL%
    Par Bahan dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/02/2008, 13h19
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 17h10

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