Pasarle parametros a un archivo .bat
-
martes, 10 de agosto de 2010 20:51
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.
Todas las respuestas
-
martes, 10 de agosto de 2010 21:03Moderador
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/
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft Employee, Moderator miércoles, 11 de agosto de 2010 16:13
- Votado como útil Aprendis24 miércoles, 11 de agosto de 2010 16:18
-
martes, 10 de agosto de 2010 21:08
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:11Moderador
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,
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft Employee, Moderator miércoles, 11 de agosto de 2010 16:13
- Votado como útil Aprendis24 miércoles, 11 de agosto de 2010 16:18
-
martes, 10 de agosto de 2010 21:55
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, 14como 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 22:05Moderador
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,
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft Employee, Moderator miércoles, 11 de agosto de 2010 16:13
- Votado como útil Aprendis24 miércoles, 11 de agosto de 2010 16:18
-
martes, 10 de agosto de 2010 22:23
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 23:01Moderador
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%7y al aplicarlo quedaria así
c:\cargar "de@yahoo.com", "para@yahoo.com"
-deemail@yahoo.com
-paraemailpara@yahoo.com
-asunto
-Comercio
-Canal
-cc
-diacomo 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 %7con 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,
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft Employee, Moderator miércoles, 11 de agosto de 2010 16:13
- Votado como útil Aprendis24 miércoles, 11 de agosto de 2010 16:18
-
miércoles, 11 de agosto de 2010 13:31
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%7tambien 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:38Moderadorcuando dices cambiar el día a que te refieres?
-
miércoles, 11 de agosto de 2010 13:45
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%7yapo 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:52Moderadortendria 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 14:40
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:57Moderadormmm... 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 15:02que 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:10Moderador
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?
- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft Employee, Moderator miércoles, 11 de agosto de 2010 16:13
- Votado como útil Aprendis24 miércoles, 11 de agosto de 2010 16:19
-
miércoles, 11 de agosto de 2010 15:12si, es para que me tome un archivo que tiene una extension sybdiax.itl
-
miércoles, 11 de agosto de 2010 15:19Moderadorok... y el problema esta en????
-
miércoles, 11 de agosto de 2010 15:20en que como le paso los parametros al bat para que me cmbie los dias??
-
miércoles, 11 de agosto de 2010 15:42Marvin 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:45ModeradorC:\Cargar "de", "Para", "asunto", "Comercio", "canal", "cc", 20
-
miércoles, 11 de agosto de 2010 16:15No no resulto, no cambia el dia.
-
miércoles, 11 de agosto de 2010 17:09Moderador
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%7lo 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 %7y 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;...
...
...
}
- Propuesto como respuesta Marvin E. PinedaMicrosoft Community Contributor, Moderator miércoles, 11 de agosto de 2010 18:35
- Votado como útil Aprendis24 jueves, 12 de agosto de 2010 21:03
- Marcado como respuesta Aprendis24 lunes, 16 de agosto de 2010 15:41
-
miércoles, 11 de agosto de 2010 18:03
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:33Moderador
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 19:39Si 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.
-
lunes, 16 de agosto de 2010 15:41
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:44
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

