none
Pasarle parametros a un archivo .bat

    Pregunta

  • Hola amigos, tengo un programa hecho en aplicacion de consola de c#, lo que hice fue pasar la aplicacion a un archivo .bat, pero este archivo necesita parametros, pero no se como hacerlo, les pediria de su ayuda.

     

    martes, 10 de agosto de 2010 20:51

Respuestas

  • ok...

    1.- si yo aplica el bat como tu lo defines no funciona.

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    %-de%1
    %-para%2
    %-asunto%3
    %-Comercio%4
    %-Canal%5
    %-cc%6
    %-dia%7

    lo que hice fue imprimir en pantalla los parametros pasados y solo recibe

    1

    2

    3

    4

    5

    6

    7

    2.- para que funcione segun tu codigo deberas de agregar un espacio entre identificador parametro ejemplo:

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    -de %1
    -para %2
    -asunto %3
    -Comercio %4
    -Canal %5
    -cc %6
    -dia %7

    y asi si funciona.

     

    static void Main(string[] args)
    {
         foreach (var arg in args)
             Console.WriteLine(arg);
    // codigo para comprobar los parametros recibidos.

         if (!leerParametros(args))
             return;

         ...

         ...

         ...

    }

     

    miércoles, 11 de agosto de 2010 17:09
  • ok, esta es la imagen de las pruebas que yo realize....

    http://cid-0d461c878d72479a.photos.live.com/self.aspx/MSDN%20en%20espa%C3%B1ol/test1.png

    si no lo tienes asi o no lo quieres hacer asi o no te funciona, no se que estarias haciendo mal para que no funcione.

    Saludos,

     

    el link que pusistes no funciona

    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:41
    miércoles, 11 de agosto de 2010 18:33
  • Buenos amigos muchas gracias por todo su apoyo, les coloco el codigo:

    en un text colocar esto

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe -de micorrreo -para micorreo -asunto "Ventas Acum" -Comercio 20 -Canal 13 -cc micorreo -dia 1 pause

    despues le cambian la extension a .bat y listo lo ejecutan.

    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:41
    lunes, 16 de agosto de 2010 15:41
  • Primero llaman al ejecutable del programa y luego le pasan los parametros. y por ultimo le cambian la extensioon al archivo.
    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:44
    lunes, 16 de agosto de 2010 15:44

Todas las respuestas

  • Cuando creamos un archivo BAT y necesitamos que al invocarlo desde la linea de comandos o desde otro medio reciba informacion, lo podemos hacer mediante parametros.

    En la codificacion del archivo BAT el signo <tt>%</tt> seguido de un numero (del 1 al 9) permite pasar parámetros. Por ejemplo si tenemos un archivo <tt>saludo.bat</tt> con la linea <tt>echo Hola %1</tt> , si lo invocamos tecleando <tt>archivo.bat jose</tt> presentará en pantalla <tt>Hola jose</tt> .

    referencia de http://blog.undermedia.com.ec/index.php/pasar-parametros-a-un-archivo-bat-dos/

    martes, 10 de agosto de 2010 21:03
  • es que yo lo estoy haciendo asi miren:

    dentro de un archivo txt coloque la ruta del programa.exe, y le coloque lo siguiente

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe

    %-de%         %"micorreo"%
    %-para%       %"micorreo"%
    %-asunto%     %"Ventas acum"%
    %-Comercio%    %20%
    %-Canal%       %13%
    %-cc%         %"micorreo"%
    %-dia%         %3%

    en donde al archivo txt le cambie la extension a .bat, esta bien asi??'

    martes, 10 de agosto de 2010 21:08
  • aqui ai más información sobre el proceso de los archivos BATCH http://es.wikipedia.org/wiki/Batch

    de ai a que te entienda o entendamos luego de tantos años que han pasado de moda el DOS, ta cañon eso.

    Saludos,

    martes, 10 de agosto de 2010 21:11
  • Oka mira indican que de vez de %algo coloque

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14

    como son 14 elementos, pero me queda una duda, si yo necesito cambiar el valor del ultimo numero en el sentido que el 13 es dia y 14 el 3, ahora yo lo quiero cambiar a 2. como hago eso.

    %-dia%         %3%

    martes, 10 de agosto de 2010 21:55
  • Hola Benjamin, revise tu pregunta anterior y me tome mi tiempo para poder ayudarte.

    para pasar los parametros a un archivo bat es como te explicaron en tu pregunta anterior y los ejemplos que te pase. ahora para pasarlos a la aplicación solo deberia ser asi:

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos %1 %2 %3 %4 %5 %6...

    y para ejecutarlo deberia ser asi: (asumiendo que el archivo bat se llama cargar)

    cargar "de: Marvin", "para: Benjamin", "asunto: Prueba de aplicación", "comercio: desconocido", "canal: por averiguar", "cc: ????", "dia: 5".....

    en tu aplicación en el Main recibiras los argumentos pasados entonces aqui es donde te sugiero que revises cada parametro recibido y obtengas la primera frase para saber que parametro es

    ejemplo:

    if (args.Length == 0)
       Console.WriteLine("No se pasaron parametros");
    else
    {
         foreach (var arg in args)
         {
              if (arg.StartsWith("de:"))
                   // lo que tenga que hacerce:
              else if (arg.StartsWith("para:"))
                   // lo que tenga que hacerce:
              else if (arg.StartsWith("asunto"))
                  // lo que tenga que hacerce:
          }
    }

    bueno, no se si este es el tipo de logica que le estas buscando y asi no tendras que preocuparte por la posición de los parametros pero si te sugeriria validar asi si pasa un parametro invalido no ejecutar la aplicación mostrar un pequeño ejemplo de como se aplican los parametros en caso de que el usuario digite todo

     

    Saludos,

     

    martes, 10 de agosto de 2010 22:05
  • Marvin mira dentro del archivo .bat tengo esto

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe

    -de "micorreo
    -para "micorreo
    -asunto "Ventas acum"
    -Comercio %20%
    -Canal %13%
    -cc "micorreo"
    -dia %2%

    la cual es la ruta del archivo .exe y lo que sigue son los parametros, lo que necesito es que por medio de un archivo .bat me entregarle los mismo parametros.

    martes, 10 de agosto de 2010 22:23
  • ya te entendi mira aplicando como tu quedaria así

    el batch quedaria así

    @echo off
    ConsoleApplication1 -de%1 -para%2 -asunto%3 -Comercio%4 -Canal%5 -cc%6 -dia%7

    y al aplicarlo quedaria así

    c:\cargar "de@yahoo.com", "para@yahoo.com"
    -deemail@yahoo.com
    -paraemailpara@yahoo.com
    -asunto
    -Comercio
    -Canal
    -cc
    -dia

     

    como podras ver tendrias por fuerza validar cada parametro como antes te lo mencione porque si el bat lo programas asi:

    @echo off
    ConsoleApplication1 -de %1 -para %2 -asunto %3 -Comercio %4 -Canal %5 -cc %6 -dia %7

    con espacios entre -para y %2 al colocar espacios es otro parametro para el programa y ya no funcionaria.

    no se... creo que la nomenclatura para pasar los parametros no es la correcta, creo que deberias de cambiarla o no ser de que alguien tenga otra idea.

    Saludos,

    martes, 10 de agosto de 2010 23:01
  • Grande Marvin muchas gracias me sirvio de mucho pero lo tuve que modificar un poco mira

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    %-de%1
    %-para%2
    %-asunto%3
    %-Comercio%4
    %-Canal%5
    %-cc%6
    %-dia%7

    tambien le tuve que colocar los % antes, bueno lo unico que me faltaria como cambio el dia?? eso seria todo.

    miércoles, 11 de agosto de 2010 13:31
  • cuando dices cambiar el día a que te refieres?
    miércoles, 11 de agosto de 2010 13:38
  • Mira

    originalmente en el visual estudio en la opcion Argumentos  de la linea de comandos : tengo colocado: que estos son los parametros que yo le pasaba

    -de "micorreo"  -para "micorreo"  -asunto "Ventas acum" -Comercio 20 -Canal 13 -cc "micorreo" -dia 1

    por lo que lo cambiamos a esto por que al cambiarlo a un .bat la cosa cambia

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    %-de%1
    %-para%2
    %-asunto%3
    %-Comercio%4
    %-Canal%5
    %-cc%6
    %-dia%7

    yapo en -dia 1 cambiaba el numero y me tomaba un dia atras o 2 dias atras o 3 atras, por eso

    miércoles, 11 de agosto de 2010 13:45
  • tendria que ver el main de la aplicación que recibe los argumentos para formarme una mejor idea, lo puedes mostrar?
    miércoles, 11 de agosto de 2010 13:52
  • Hola mira te dejo la direccion del skydrive donde subi el programa en txt

    http://cid-9d1aeeb9b51e4489.office.live.com/self.aspx/Nueva%20carpeta%20%5E52%5E6/Proyecto.txt

    miércoles, 11 de agosto de 2010 14:40
  • mmm... bueno, el metodo leerParametros hacer lo que el nombre dice y asigna a variables los parametros... asi que si para dia pasastes como valor de parametro 20.... que quieres hacer con este valor luego de asignarselo a la variable "diavta"....
    miércoles, 11 de agosto de 2010 14:57
  • que por defecto esta el 1 osea tengo puesto el 1, y cuando coloco un brackpoint y paso por encima de la variable DiaVenta, y me toma el dia de ayer, cuando coloco 2 me toma el dia antes de ayery asi secesivamente, para que segun el dia me cargue un archivo y me lo pegue en una tabla.
    miércoles, 11 de agosto de 2010 15:02
  • veamos si pasa 20 en el parametro días

    string DiaVenta = DateTime.Now.AddDays(int.Parse(diavta) * -1).ToString("dd-MM-yyyy");

     

    DiaVenta = DateTime.Now.AddDay(20 * -1).ToString("dd-MM-yyyy"); // 20 * -1 = -20, a la fecha actual le resta 20 días

    es correcto esto?

     

     

     

    miércoles, 11 de agosto de 2010 15:10
  • si, es para que me tome un archivo que tiene una extension sybdiax.itl
    miércoles, 11 de agosto de 2010 15:12
  • ok... y el problema esta en????
    miércoles, 11 de agosto de 2010 15:19
  • en que como le paso los parametros al bat para que me cmbie los dias??
    miércoles, 11 de agosto de 2010 15:20
  • Marvin muchas gracias por el apoyo sobre este tema, solamente me falta ver la forma de cambiar los valores en el archivo bat, o hay otra forma de hacer esto.?
    miércoles, 11 de agosto de 2010 15:42
  • C:\Cargar "de", "Para", "asunto", "Comercio", "canal", "cc", 20
    miércoles, 11 de agosto de 2010 15:45
  • No no resulto, no cambia el dia.
    miércoles, 11 de agosto de 2010 16:15
  • ok...

    1.- si yo aplica el bat como tu lo defines no funciona.

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    %-de%1
    %-para%2
    %-asunto%3
    %-Comercio%4
    %-Canal%5
    %-cc%6
    %-dia%7

    lo que hice fue imprimir en pantalla los parametros pasados y solo recibe

    1

    2

    3

    4

    5

    6

    7

    2.- para que funcione segun tu codigo deberas de agregar un espacio entre identificador parametro ejemplo:

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe
    -de %1
    -para %2
    -asunto %3
    -Comercio %4
    -Canal %5
    -cc %6
    -dia %7

    y asi si funciona.

     

    static void Main(string[] args)
    {
         foreach (var arg in args)
             Console.WriteLine(arg);
    // codigo para comprobar los parametros recibidos.

         if (!leerParametros(args))
             return;

         ...

         ...

         ...

    }

     

    miércoles, 11 de agosto de 2010 17:09
  • aqui dejo la direccion del problema donde mando un 2 pero me retorna solamente 1

    https://cid-9d1aeeb9b51e4489.office.live.com/browse.aspx/proyecto?uc=1

    miércoles, 11 de agosto de 2010 18:03
  • ok, esta es la imagen de las pruebas que yo realize....

    http://cid-0d461c878d72479a.photos.live.com/self.aspx/MSDN%20en%20espa%C3%B1ol/test1.png

    si no lo tienes asi o no lo quieres hacer asi o no te funciona, no se que estarias haciendo mal para que no funcione.

    Saludos,

     

    el link que pusistes no funciona

    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:41
    miércoles, 11 de agosto de 2010 18:33
  • Si te encuentro toda la razon estas super bien como tienes pero lo que necesito yo es como le cambio el valor del dia en el archivo.bat ya que el archivo va a estar en otro pc no en el mio.
    miércoles, 11 de agosto de 2010 19:39
  • Buenos amigos muchas gracias por todo su apoyo, les coloco el codigo:

    en un text colocar esto

    C:\Proyectos\CargaArchivos\CargaArchivos\bin\Debug\CargaArchivos.exe -de micorrreo -para micorreo -asunto "Ventas Acum" -Comercio 20 -Canal 13 -cc micorreo -dia 1 pause

    despues le cambian la extension a .bat y listo lo ejecutan.

    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:41
    lunes, 16 de agosto de 2010 15:41
  • Primero llaman al ejecutable del programa y luego le pasan los parametros. y por ultimo le cambian la extensioon al archivo.
    • Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:44
    lunes, 16 de agosto de 2010 15:44