C/Visual C - Ejecutar un archivo .bat

 
Vista:

Ejecutar un archivo .bat

Publicado por rraces (25 intervenciones) el 31/03/2006 15:48:46
Hola amigos, mi problema es el siguiente tengo que ejecutar archivo .bat , este archivo muestra por pantalla si se ha ejecutado correctamente o no. Pues si utilizo la función "system" el código de retorno es siempre el mismo, entonces decidi utilizar CreateProcess para que lo ejecute y poder capturar la salida que se muestra en la shell, pero no me funciona el CreateProcess, con un .exe si me funciona pero con el .bat no. Es porque solo puede ejecutar .exe? Existe alguna otra función o algun parámetro del CreateProcess que sea necesario, ´la parte parte del código que llama al .bat es la siguiente:

// Inicializo la estructura STARTUPINFO
ZeroMemory(&StartupInfo, sizeof(StartupInfo));
StartupInfo.cb = sizeof StartupInfo;
StartupInfo.dwFlags |= STARTF_USESTDHANDLES;
StartupInfo.hStdOutput = hChildStdoutWr;
StartupInfo.hStdInput = hChildStdinRd;
StartupInfo.hStdError = hChildStdoutWr;

//EJECUCION DE CMNPROJ
//**************************************************************************//
ValorProceso= CreateProcess("ant.bat",
parametros,
NULL,
NULL,
TRUE,
0,
NULL,
NULL,
&StartupInfo,
&ProcessInfo);



WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // Espero a que termine
CloseHandle(ProcessInfo.hThread); // Cierro el hilo
CloseHandle(ProcessInfo.hProcess); // Cierro el proceso

//ValorProceso = system(argumentos.data());

LeerShell();

La funcion LeerShell no la muestro porque lo que no llega a ejecutar el .bat

GRACIAS Y UN SALUDO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutar un archivo .bat

Publicado por fernando.gomez (1603 intervenciones) el 31/03/2006 19:00:34
CreateProcess es para ejecutar un proceso. Un BAT no es un proceso en sí, sino un archivo interpretado por com.exe, que sí es un proceso. Es como querer hacer un CreateProcess a un archivo de Excel.

Emplea ShellExecute en lugar de CreateProcess.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar un archivo .bat

Publicado por rraces (25 intervenciones) el 03/04/2006 10:34:14
Hola de nuevo, gracias por tu aportación, ahora utilizando ShellExecute como podría guardar en un fichero la salida de la shell de DOS del fichero .bat.

Gracias y Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar