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

BODI Discussion :

[BODS 12.2] Lancement de .bat via script


Sujet :

BODI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut [BODS 12.2] Lancement de .bat via script
    Bonjour,

    J'ai un problème assez complexe d'appel de .bat depuis un script dans mon job BODS.
    Je vais essayer de vous expliquer mon raisonnement le plus simplement possible.

    Mon script s'exécute en tête de job, il doit convertir des .xlsx en .xls pour qu'ils soient utilisés dans le job.
    Ceux ci sont converti via une procédure de mon cru : un .bat appel un .vbs qui copie/rename.

    Code du .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ECHO OFF
    c:\windows\system32\cscript.exe chemin1\xlsx2xls.vbs "chemin2\tur6B.xlsx" "chemin2\tur6B.xls"
    EXIT
    Code du .vbs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open(Wscript.Arguments(0), null, true, null, null, null,null,null,null,null,null,null,null,null,null)
    MsgBox("OK")
    objExcel.Application.Visible = False
    objExcel.Application.DisplayAlerts = False
    objExcel.ActiveWorkbook.SaveAs Wscript.Arguments(1), 56
    objExcel.ActiveWorkbook.Close
    objExcel.Application.DisplayAlerts = True
    objExcel.Application.Quit
    WScript.Quit
    Et voici le code du script BODI (Toto.bat contient un CALL vers le premier .bat, c'était un test mais ça marchait alors que l'appel direct au premier bat ne fonctionne pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    begin
     
    exec('cmd', 'chemin2\toto.bat', 8);
    sleep(10000);
    end
    Le problème maintenant : Quand je double clic sur toto.bat, tout se passe bien, la conversion, etc.
    Quand je lance depuis BODS, ca ne marche pas.

    Je tente un truc : Je change le contenu du premier .bat en mettant un ECHO vers fichier au lieu de l'appel au VBS. Le double clic marche (normal), mais l'exécution depuis BODI aussi !

    Ma question est donc de savoir si quelqu'un sait pourquoi dans un cas ca marche et dans l'autre non, y a-t-il une limite en profondeur de l'appel, est-ce un problème de passage de paramètres dans les cmd,...

    Je précise qu'il n'y a aucune erreur à l'exécution dans BODS, et le sleep je me suis dit que peut être qu'il n'avait pas le temps de convertir avant de faire la suite, mais ça change rien.

    Merci d'avance à tout ceux qui auront eu le courage de lire

    PS : sinon s'il y en a qui savent comment gérer les .xlsx avec cette version j'achète aussi ça sera vachement plus simple
    Guillaume

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Par défaut
    J'ai eu aussi pas mal de difficultés à gérer des scripts, mais c'était toujours dû
    - soit à des chemins qui n'était pas en absolu partout.
    - soit à des droits sur des répertoires réseau (selon l'utilisateur utilisé pour le service DS).
    - soit concernant les paramètres passés mal récupérés (exec avec paramètres) du genre un symbole ">" dans une chaine, interprété par le Dos.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut
    Merci de ta réponse, mais là du coup le problème ne semble pas vraiment être sur les chemins, puisqu'en fonction de la fonction utilisé dans le .bat l'exécution marche ou pas, mais marche tout le temps quand l'exécution est fait manuellement (double clic sur .bat).

    Je me demande presque si ça ne viendrait pas du cmd.exe en appel récursif; c'est un peu le flou complet ^^'

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 60
    Par défaut
    Citation Envoyé par dnyyy Voir le message
    le problème ne semble pas vraiment être sur les chemins, puisqu'en fonction de la fonction utilisé dans le .bat l'exécution marche ou pas, mais marche tout le temps quand l'exécution est fait manuellement (double clic sur .bat).
    '
    Typiquement un problème de path. déplace le premier .bat, et double-cliques. Puis le suivant. Si c'est un problème de path relatif ça apparaitra.
    Ca peut aussi être un problème de variable d'environnement.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2004
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2004
    Messages : 131
    Par défaut
    Salut,
    Effectivement, il s'agit à mon avis d'un problème de chemin.
    Au lieu de:
    exec('cmd', 'chemin2\toto.bat', 8);
    Essaye:
    exec('cmd', 'chemin2\\toto.bat', 8);
    En remplaçant les "\" par des "\\" dans le reste du chemin.

    ++

  6. #6
    Membre averti
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Octobre 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 16
    Par défaut
    Quand je déplace ça ne marche plus, et quand je les remets ça marche (ce sont des liens en dur).
    Pour la variable d'environnement je ne sais pas trop ce qui pourrait jouer.
    J'ai testé de lancer directement le vbscript avec paramètres comme depuis la console plutôt que le .bat, mais j'ai le même résultat : mon job se bloque au niveau du script et rien ne se passe.

    Merci de votre aide mais je pense que je vais devoir passer à une autre méthode "moins propre" pour faire ça

    Edit : Le \\ je l'ai tenté, il l'interprète de la même manière que le \

    En fait je pense que le .bat se lance bel et bien, voici une des lignes affichées avec le print :
    9644 8840 PRINTFN 05/08/2013 10:34:48 fichier ®ÿC:\Users\212304920\Documents\PersoTG\fichiers_TG\test1.xlsxÿ¯. Plusieurs raisons sont possiblesÿ: Le nom du....

    par contre avec un .xls il me dit juste fichier introuvable. Peut être une histoire d'extension.

  7. #7
    Membre éprouvé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2004
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2004
    Messages : 131
    Par défaut
    Encore une idée pour résoudre ton problème.

    Au lieu d'utiliser:
    exec('cmd', 'c:\\chemin2\\toto.bat', 8);
    Utiliser:
    exec('wscript','c:\\chemin2\\ton_script.vbs' ,0);
    sinon tester avec
    exec('cscript','c:\\chemin2\\ton_script.vbs' ,0);

    Essaye avec un emplacement local avant d'utiliser un emplacement réseau pour ton script.

    Si c'est ok pour le local, ça voudra dire que tu peux avoir des problématiques de droits d'accès à ton script par l'utilisateur utilisé pour lancer les services DI.

    ++

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

Discussions similaires

  1. Lancement d'un bat invisible via script VBS
    Par coolpix77 dans le forum Général Python
    Réponses: 11
    Dernier message: 06/09/2014, 15h15
  2. Lancement d'un job Talend via script
    Par bstevy dans le forum Exécution et industrialisation
    Réponses: 7
    Dernier message: 26/11/2009, 15h22
  3. lancement de batch via TSE
    Par Jean-Matt dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 08/08/2005, 15h17
  4. Events "OnAuthenticate, ..." accessible via script
    Par mchicoix dans le forum XMLRAD
    Réponses: 10
    Dernier message: 09/02/2005, 16h50
  5. [Process]Lancement d'applictions via bath sous Dos.
    Par juflata dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/06/2004, 14h03

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