Lancer un .bat dans un process ?? [Résolu]

cs_chuckboy
Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 7 nov. 2005 à 20:30 - Dernière réponse : meech
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
14 août 2007
- 8 nov. 2005 à 17:54
Bonjour

J'essait de lancer un .bat dans un process et je n'y arrive pas avec la fonction CreateProcess.

Quelqu'un pour m'aider svp ?

Voici ce que je tente de lancer (contenu de la string sExec)
%ANT_HOME%\bin\ant.bat -propertyfile %BUILD_HOME%\properties\properties.txt -Dbasedir="%BUILD_HOME%/
work/cmdLine_SGL" -Dbuild.compiler="msdev" -Dbuild.sgl.config="win32 release" -Dst.sgl.view="sgl 1.1
3 prvtest" -Dst.sgl.label="SGL13" -Dbuild.sgl.output.dir=c:\att_temp\TESTUNIT1\Build1 -f %BUILD_HOME
%\scripts\sgl.xml build

CreateProcess(NULL, (LPTSTR)sExec.c_str(), NULL, NULL, TRUE, 0,NULL,NULL, &_SI, &_PI);
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
meech
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
14 août 2007
- 8 nov. 2005 à 15:27
3
Merci
Bonjour,



Voilà, j'ai fait des tests.



D'une part, avec un simple fichier nommé test.bat :

@echo off

echo canard

pause




D'autre part, avec un fichier *.c (aisément adaptable en C++) :

#include <windows.h>

#include <stdio.h>



int main(int argc, char** argv)

{

STARTUPINFO siStartupInfo;

PROCESS_INFORMATION piProcessInfo;



memset(&siStartupInfo, 0, sizeof(siStartupInfo));

memset(&piProcessInfo, 0, sizeof(piProcessInfo));

siStartupInfo.cb = sizeof(siStartupInfo);

if (CreateProcess(NULL,"cmd.exe /c
d:\\test.bat",NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,0,&siStartupInfo,&piProcessInfo)
FALSE)

{

fprintf(stderr, "Echec d'execution du processus.\n");

return(128);

}

return(0);

}



A priori, cela fonctionne.

Espérant t'avoir aidé un peu plus...



Ciao.

Merci meech 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de meech
meech
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
14 août 2007
- 8 nov. 2005 à 00:50
0
Merci
Salut,

Essaie avec un truc du genre :
CreateProcess("cmd.exe", "/start ant.bat", etc.

En fait, les fichiers *.bat ne sont pas tout à fait gérés comme les autres : ils ont besoin de l'intepréteur de commandes MS-DOS pour pouvoir s'exécuter.

A titre informatif, je n'ai pas vérifier mais, d'après mes souvenirs (j'ai été confronté à ce problème il y a quelques temps), la solution est de cet ordre-là...

En espérant t'avoir un peu aidé,
A plus tard.
Commenter la réponse de meech
cs_chuckboy
Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 8 nov. 2005 à 15:01
0
Merci
Je n'y arrive toujours pas. La solution apporter par meech ne fonctionne vraiment pas. Quelqu'un a une autre idée ou des précision à apporter ?
Commenter la réponse de cs_chuckboy
cs_chuckboy
Messages postés
64
Date d'inscription
vendredi 16 septembre 2005
Dernière intervention
31 mars 2009
- 8 nov. 2005 à 15:50
0
Merci
Merci c'est exactement ce qui me manquait
cmd.exe /c d:\\test.bat

Merci du coup de main

Au fait , mon script me sort un code d'erreur. Pour l'obtenir dans le command line je dois faire un echo %ERRORLEVEL% , t'as une idée comment récuperer ca dans mon c ?

thks!
Commenter la réponse de cs_chuckboy
meech
Messages postés
209
Date d'inscription
vendredi 11 avril 2003
Dernière intervention
14 août 2007
- 8 nov. 2005 à 17:54
0
Merci
Re,



Je ne sais pas trop si cela va fonctionner, mais ERRORLEVEL est une variable d'environnement. En ANSI C, un simple char* spErrorLevel = getenv("ERRORLEVEL")
devrait retourner quelque chose (si spErrorLevel == NULL, alors la variable d'environnement n'existe pas).



Mais je crains que ce soit l'exécution du Java qui retourne ce code d'erreur et non le fichier de commande DOS...



A plus.
Commenter la réponse de meech

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.