PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Windev 22 Création et exécution .bat
Windev 22 Création et exécution .bat
Débuté par leroyJB, 16 mai 2018 11:05 - 3 réponses
Membre enregistré
4 messages
Posté le 16 mai 2018 - 11:05
Bonjour à tous, je développe une appli, et dans le cadre de celle-ci j'ai besoin d'exécuter un jar, mais je galère sévère depuis 2 jours sans résultat, d'où mon appel aux secours (dans cet exemple de code, je n'essaye pas d'appeler le jar, donc ne vous arrêtez pas là dessus, mon souci actuel est vraiment sur le .bat).
Si je crée le .bat par windev sans l'exécuter, puis que je l'exécute à la main, il fonctionne.
Si je crée à la main le .bat et que je l'exécute par windev, il fonctionne.
Si je le crée par windev puis l'exécute, ça plante.
Un petit bout de code vaut mieux que tous les discours :

bMigrationOk est un booléen = Vrai
ResCréation est un entier
nResOuverture est un entier
sContenuBat est une chaîne
sContenuBat = "echo ""Montest.bat"" "+RC+"timeout /t 10"

ResCréation = fCrée(gsRepFichierBat+"Test01.bat")
SI ResCréation <> -1 ALORS
nResOuverture = fOuvre(gsRepFichierBat+"Test01.bat",foLectureEcriture)
SI nResOuverture <> -1 ALORS
fEcrit(nResOuverture, sContenuBat)

SI fFerme(nResOuverture) <> -1 ALORS
Multitâche(-1)
//*********************************************
SI PAS DDELance(gsRepFichierBat+"Test01.bat",DDEMaximise,Vrai) ALORS
Erreur(ErreurInfo(errComplet))
FIN
//*********************************************
SINON
Erreur("Impossible de fermer lanceurMk2Hor.bat"+RC+ErreurInfo(errComplet))
FIN

SINON
bMigrationOk = Faux
LIB_Console += "Problème à l'ouverture de "+gsRepFichierBat+"lanceurMk2Hor.bat :"+RC
LIB_Console += ErreurInfo(errComplet)+RC
FIN
SINON
bMigrationOk = Faux
LIB_Console += "Problème à la création du fichier "+gsRepFichierBat+"Test01.bat :"+RC
LIB_Console += ErreurInfo(errComplet)+RC
FIN

Si j'appelle mon bat comme ceci ou comme c'est fait entre les deux //*********************************************
SI PAS LanceAppli(gsRepFichierBat+"Test01.bat") ALORS
Erreur(ErreurInfo(errComplet))
FIN
J'ai l'erreur (fichier déjà utilisé par un autre processus):





Voila quelqu'un aurait une piste.
Ps :
J'ai essayé aussi LanceAppliAssociée, mais là j'ai une erreur de partage de fichier.
Membre enregistré
4 messages
Posté le 16 mai 2018 - 11:41
Bon, parce que ça peut toujours servir pour d'autres personnes la solution au problème était dans les fCrée fOuvre. Utiliser les deux est une erreur, car deux instances du fichier sont ouvertes.
Utiliser fSauveTexte gère la création, l'ouverture et la fermeture, ce qui est plus facile et allège considérablement le code.
Un petit détail à ajouter bien penser à ajouter le chemin complet du jar dans le .bat, sinon le jar ne se lancera pas via windev, alors qu'en double cliquant dessus il se lancera.

sContenuBat est une chaîne
sContenuBat = "java -Xmx1024m -jar "+gsRepFichierBat+"LanceurMk2Ho-1.0-SNAPSHOT-jar-with-dependencies.jar "...
+ "--spring.ds_isis.url=jdbc:mysql://"+gsIPSource+":"+gsPortSource+"/"+gsBaseSource+" "...
+ "--spring.ds_isis.username="+gsUtilisateurSource+" "...
+ "--spring.ds_isis.password="+gsMotDePasseSource+" "...
+ "--props.options[0]=archivePDF "...
+ "--conf_isis.clearfictemp=0"+RC+"pause"
SI PAS fSauveTexte(gsRepFichierBat+"Test03.bat",sContenuBat) ALORS
Erreur("Impossible de créer le bat."+RC+ErreurInfo(errComplet))
SINON
Multitâche(-1)
SI PAS DDELance(gsRepFichierBat+"Test03.bat",DDEActif,Vrai) ALORS
Erreur(ErreurInfo(errComplet))
FIN
FIN
Membre enregistré
939 messages
Popularité : +66 (68 votes)
Posté le 16 mai 2018 - 11:43
bonjour,

la fonction FCréé() créé le fichier mais l'ouvre en lecture écriture également et vous renvoie le Handle.
Donc pas besoin de faire un fouvre après votre fCréé

bon dèv
Membre enregistré
4 messages
Posté le 16 mai 2018 - 11:52
Merci, peut-être pourriez vous conseiller sur le choix entre fCrée et fSauveTexte. Dans mon cas les deux fonctionnent mais peut-être vaut il mieux utiliser l'un que l'autre.

--
Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu’il est stupide. – Albert Einstein