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

 Delphi Discussion :

Fichier batch récalcitrant


Sujet :

Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut Fichier batch récalcitrant
    Bonjour,

    Je vais peut-être vous paraître fort ignorant, mais j'ai un soucis avec un fichier .bat que je voudrais lancer à partir d'une application Delphi XE2.

    En voici le contenu qui sert à convertir 3 messages d'un fichier Gib (Météorologiques) en 3 fichiers .csv à travers un exécutable degrib.exe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    degrib.exe Grib.grb2 -C -msg 1 -Csv -Unit m -Decimal 0 
    degrib.exe Grib.grb2 -C -msg 2 -Csv -Unit e -Decimal 0
    degrib.exe Grib.grb2 -C -msg 3 -Csv -Unit e -Decimal 0
    Le batch, l'exe et le fichier à convertir se situent dans un sous répertoire WX de mon application.

    Le batch fonctionne parfaitement sur un double clic et les fichiers csv sont bien générés.

    A partir de mon application, voici ce qu j'otiens grâce à une pause dans le batch:
    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
     
    D:\Projet Delphi\CPS\Win32\Debug>degrib.exe Grib.grb2 -C -msg 1 -Csv -Unit m -De
    cimal 0
    'degrib.exe' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    D:\Projet Delphi\CPS\Win32\Debug>degrib.exe Grib.grb2 -C -msg 2 -Csv -Unit e -De
    cimal 0
    'degrib.exe' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    D:\Projet Delphi\CPS\Win32\Debug>degrib.exe Grib.grb2 -C -msg 3 -Csv -Unit e -De
    cimal 0
    'degrib.exe' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
     
    D:\Projet Delphi\CPS\Win32\Debug>pause
    Appuyez sur une touche pour continuer...
    Voici maintenant comment je lance le batch:
    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
    function RunAndWait(const FileName: String): DWORD;
    var
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
    begin
      Result := STILL_ACTIVE;
      GetStartupInfo(StartupInfo);
      if CreateProcess(nil, PChar(FileName), nil, nil, IsConsole,
        NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
      try
        if WaitForSingleObject(ProcessInfo.hProcess, INFINITE) = WAIT_OBJECT_0
    then
          GetExitCodeProcess(ProcessInfo.hProcess, Result);
      finally
        CloseHandle(ProcessInfo.hThread);
        CloseHandle(ProcessInfo.hProcess);
      end;
    end;
     
    ........
      Req :=extractFilePath(application.exename)+ 'WX\csv.bat';
      RunAndWait(Req);
    ........
    J'ai parcourus des dizaines de sujets sur ce type de problème, mais aucun ne m'a proposé de solution ou de piste satisfaisante.

    Je viens donc humblement solliciter votre aide.

    Merci par avance.

    Cordialement
    Pierre

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut
    Hello,

    Je pense que tu dois avoir un pb de repertoire courant.
    Quand tu lance ton batch directement, tu es dan le même rep. que degrib.exe.
    Par contre, en lançant depuis ton appli, le rep. courant doit tjs rester dans le rep. de ton appli, et pas le sous rep. WX

    Juste pour essayer, copie ton .bat et degrib.exe dans le rep. de ton executable Delphi et modifie ton code pour executer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ........
      Req :=extractFilePath(application.exename)+ 'csv.bat';
      RunAndWait(Req);
    ........
    Si là ça fonctionne, ça veut dire qu'il faudra trouver une solution pour changer le rep. courant avant d'executer ton .Bat
    Quelqu'un aura peut-être une idée....

    [Mode edition]
    Je viens de regarder. Apparemment, il faudrait utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ........
      ReqDir :=extractFilePath(application.exename)+'WX/';
      Req    := ReqDir+ 'csv.bat';
     
      SetCurrentDir(ReqDir); //Change rep. courant
      RunAndWait(Req);
      SetCurrentDir(extractFilePath(application.exename)); //Retour sur rep. executable
    ........
    ATTENTION : je n'ai pas mon Delphi sous les yeux, c'est donc de mémoire que je met ce code, sans compilation ni test....

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    Bonjour,

    Aucun changement avec ta proposition
    J'ai même placé l'exe et le fichier de donnée à convertir dans le dossier de l'appli.

    Merci en tout cas pour la réponses

    Cordialement
    Pierre

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut
    Hello again,

    En mode debuguage, je me demande si le rep. courant de Delphi n'est pas different. c'est le
    D:\Projet Delphi\CPS\Win32\Debug
    dans ton message precedent qui me met le doute....

    Entre temps, j'ai modifié mon précédent msg. As-tu essayé avec mes ajouts?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 439
    Points : 161
    Points
    161
    Par défaut
    GAGNE MrBoo,

    Avec mes félicitations et remerciements sans limites.

    Un Résolu de plus

    Cordialement
    Pierre

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 29
    Points : 50
    Points
    50
    Par défaut
    Heureux d'avoir pu t'aider....

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

Discussions similaires

  1. Fichier Batch et fonction Choice : Un alternatif ???
    Par BilTCD dans le forum Windows
    Réponses: 43
    Dernier message: 31/08/2005, 19h18
  2. [MFC] Lancement de fichier batch
    Par spirit_1999 dans le forum MFC
    Réponses: 28
    Dernier message: 01/06/2005, 11h21
  3. comment tester la connexion depuis un fichier BATCH
    Par philippe_Aix dans le forum Oracle
    Réponses: 13
    Dernier message: 11/10/2004, 16h56
  4. Utilisation de fichiers batch
    Par shifty.net dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 01/08/2004, 16h31
  5. fichier batch + php
    Par zorian dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 27/04/2004, 11h40

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