Como ejecutar archivos .bat desde c++ ?

Yo lo estoy intentando de muchas maneras, y no me sale...

Lo ultimo que hice fue con:

int main()
{
mkdir("C:\\proWin");

std::fstream my_file("c:\\proWin\\Esp_pc.bat", std::ios::app);

my_file << "MD C:\\proWin \n" << "cd C:\\proWin \n" << "echo %computername% /all> pcNamed.txt"; 

system("c:\\proWin\\Esp_pc.bat");
return 0;
}

El programa crea el archivo en la ruta especificada sin problemas, pero no lo ejecuta, y yo necesito que lo ejecute...

Espero me puedan ayudar... GRACIAS DE ANTEMANO :D

1 respuesta

Respuesta
1

No tengo demasiada experiencia con C++ pero soy aficionado a la programación y alguna vez he hecho pequeños programitas en este lenguaje. De modo que he intentado ejecutar el ejemplo que aportas. Mi "entorno de desarrollo" es Dev-C++. Compilo sin problemas una vez localizados los includes necesarios. También se ejecuta sin problemas, aparentemente, pero el bat se crea vacío. Parece claro que la instrucción

my_file << "MD C:\\proWin \n" << "cd C:\\proWin \n" << "echo %computername% /all> pcNamed.txt"; 

no me funciona.

Por lo que dices no es tu caso y el bat se crea correctamente.

De todas formas respecto al bat que creas, supongo que si me funcionara me encontraría con esto:

MD c:\ProWin
cd c:\ProWin
Echo %computername% /all> pcNamed.txt

El primer comando debe dar error porque intenta crear un directorio que ya existe porque lo ha creado la primera instrucción del módulo. De hecho si relleno manualmente el archivo bat con el contenido anterior, no lo borra ni dice nada y en ese caso sí que se ve la ejecución y sale el mensaje "Ya existe el subdirectorio o el archivo c:\ProWin". Y no veo que el /all del último sirva para mucho, por lo menos en mi entorno de trabajo. Pero eso no debería impedir que se ejecutara. ¿No será que debes cerrar el archivo bat antes de intentar usarlo?

Resulta que ayer, pocos minutos después de mi respuesta anterior, escribí otra en la que decía que ya había visto cual era el problema en mi entorno. Parece que, aunque no dé errores de compilación ni de ejecución, la "especificación" fstream para archivos no funciona correctamente. La he cambiado por ofstream y ya he conseguido reproducir el problema. Y de paso confirmar mi intuición de que era necesario cerrar el archivo. Prueba con esto:

int main()
{
mkdir("C:\\proWin");
std::fstream my_file("c:\\proWin\\Esp_pc.bat", std::ios::app);
my_file << "MD C:\\proWin \n" << "cd C:\\proWin \n" << "echo %computername% /all> pcNamed.txt"; 
my_file.close();
system("c:\\proWin\\Esp_pc.bat");
return 0;
}

Lo que no sé es que pasó con esa segunda respuesta que no veo por ningún lado. Por eso la he repetido.

WOW! Amigo muchas gracias, el código me fincionó sin problemas !

Muchas gracias por tu ayuda :D el código me funcionó a la perfección!

Gran aporte :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas