Ejecutar comandos en CMD

Iniciado por joelmanx, 30 Agosto 2010, 00:33 AM

0 Miembros y 1 Visitante están viendo este tema.

joelmanx

hola a todos, soy nuevo en programacion con C, la duda que tengo es:
como ejecuto una serie de comandos en cmd en la consola de windows?, porque lo estaba ejecutando un archivo de comandos de esta forma:


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
void main(void)
{   
     system("exe_portable.cmd");
     
}

el contenido del archivo cmd es:

set PATH=libNative/;libNative/gdaldata/;%PATH%
set PROJ_LIB=libNative/nad/
set JAVARUT=Java/bin/java.exe
"%JAVARUT%" -Djava.library.path="libNative/;libNative/gdaldata/;libNative/nad/" -Xmx500M -jar EvSIG.jar

lo quiero hacer porq necesito crear variables de entorno y tiene que ser un solo proceso de cmd, y no quiero q se vea la consola de comandos.

de antemano gracias por el aporte.
proyectos libres que desarrollo, si quieres colaborar, únete y hagamos un buen aporte.

http://guitarragnu.sourceforge.net/ (Software Educativo)
http://evsigmapserverj.sourceforge.net/ ( Software GIS, SIG, Mapserver)

Fluflu

Yo también estoy empezando pero creo que para ejecutar comandos del sistema (al menos en linux, en windows no programo) solo necesitas la librería stdio.h.

Puedes escribir directamente los comandos en la funcion system.

system("comandos");
La puerta más segura es la que no necesita ser cerrada...

joelmanx

gracias por la respuesta, estuve viendo como hacerlo, y encontre que para solucionarlo debo ejecutar todos los comandos en una sola linea de comando:

  system("set PROJ_LIB=libNative/nad/&&set PATH=libNative/;libNative/gdaldata/;%PATH%&&set JAVARUT=Java/bin/java.exe&&java.exe -Djava.library.path='libNative/;libNative/gdaldata/;libNative/nad/' -Xmx500M -jar EvSIG.jar");

asi si funciona, pero me falta mas detalles.
proyectos libres que desarrollo, si quieres colaborar, únete y hagamos un buen aporte.

http://guitarragnu.sourceforge.net/ (Software Educativo)
http://evsigmapserverj.sourceforge.net/ ( Software GIS, SIG, Mapserver)

leogtz

system() es propio de stdlib.h no de stdio.h y para ejecutar un comando puede usar funciones propias del API.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Komodo

Lo que el quiere es ejecutar ese CMD

usa ShellExecute ;)

Si no te aclaras pide ayuda.


Garfield07

Desde Windows lo mas facil si quieres hacer eso seria


#include <windows.h>

int main ()
{
WinExec ("exe_portable.cmd", SW_HIDE); //AQUI
}


Y no te aparece la pantalla xD


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Komodo

Cita de: Sagrini en 31 Agosto 2010, 12:18 PM
Desde Windows lo mas facil si quieres hacer eso seria


#include <windows.h>

int main ()
{
WinExec ("exe_portable.cmd", SW_HIDE); //AQUI
}


Y no te aparece la pantalla xD

No sabía de eso, muchas gracias.

Estuve investigando muchisimo sobre ShellExecute para que exista un metodo tan facil.

GRACIAS