Comunidad Underground Hispana  

Retroceder   Comunidad Underground Hispana > Programacion > Visual Basic y Net


Respuesta Crear Nuevo Tema
 
Compartir en twitter LinkBack Herramientas Desplegado
Antiguo 01-dic-2009, 10:22   #1
Miembro
 
Fecha de Ingreso: diciembre-2006
Amigos 0
Mensajes: 62
Gracias: 1
Agradecido 1 vez en 1 mensaje.
Predeterminado Ejecutar *.bat con parametros desde aplicación en VB 6.0

Buen Dia a todos.

Paso por aca para solicitar una orientación en la medida de los posible ya que estoy construyendo una aplicación en VB6.0 el cual lista los archivos con una extensión especifica en un listbox, luego esos archivos que selecciona el usuario se pasan a otro listbox, y cuando se le da la orden al boton de ejecutar la acción para ese archivo, pues este no toma los parametros. Cabe destacar que ese boton de ejecutar llama a un .bat para que haga las acciones pertinentes que se encuentran de ese archivo .bat. Trataré de ser más grafico a fin de no generar confusión y para que se entienda la cuestion




Bien con Option1 llamamos a los archivos de X directorio y que se listen en list1 luego pasamos a list2 lo que queremos ejecutar, y luego con el botón Command4 llamamos al .bat para que se ejecute dicho contenido.

Parametros que debe recibir el .bat Pues Mes y Dia. En el archivo hay algo como 20070116.pdd . Para que el bat se ejecute sin problemas el debe tomar 0116 y apartir de allí ejecutarlo. Teniendo en cuenta que 01 es el mes y 16 es el día.

Intente hacerlo de esta forma

Shell "C:\ruta\subruta\archivo.bat ", vbNormalFocus

De esta manera me llama la CMD y se ejecuta el .bat SIN PARAMETROS, claro esta intenté de esta forma tambien

Shell "C:\ruta\subruta\archivo.bat 2007%01%02", vbNormalFocus

Y nada, se ejecuta al .bat y no dura ni un segundo en la pantalla, por ende no hace nada

En lineas generales, si fuera por consola la llamada al .bat seria "archivo.bat 0116", pues aqui tambien debe ser igual tomando las fechas del archivo generado. Siempre cumple ese mismo patrón " 20000101.ext" y nos interesa mes y dia, no se si ese patrón pueda servir para algo,,

Quisiera que me dieran sugerencias para ver como se puede resolver este inconveniente que me ha tenido parado en días. Sin más nada que añadir, Gracias de antemano =)

hellfire99 está desconectado   Responder Citando
Antiguo 01-dic-2009, 14:24   #2
Veterano
 
Avatar de tkows
 
Fecha de Ingreso: febrero-2005
Amigos 6
Mensajes: 928
Gracias: 0
Agradecido 20 veces en 12 mensajes.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Código:
Shell "C:\ruta\subruta\archivo.bat 2007 %01 %02", vbNormalFocus
  
Ojo con los espacios. Otra cosa, los parametros %01 y %02 deben ser ya lo que le quieres pasar, ejemplo:

Código:
Shell "C:\ruta\subruta\archivo.bat 2007 01 16", vbNormalFocus
  
Lo del que se cierra el BAT ya es cosa del BAT, si tienes dudas de esto pregunta en la sección de Batch. Obtener el 01 y el 16 desde la cadena lo tendrás que hacer aparte (ya sea en el BAT o en el código de VB), si tienes dudas pregunta

Un saludo!
__________________
Y me busco en la memoria el rincon donde perdí la razón
y la encuentro donde se me perdió cuando dijiste que no.
tkows está desconectado   Responder Citando
Antiguo 09-dic-2009, 07:38   #3
Miembro
 
Fecha de Ingreso: diciembre-2006
Amigos 0
Mensajes: 62
Gracias: 1
Agradecido 1 vez en 1 mensaje.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Estoy ejecutando la funcion MID para poder obtener los arrays que necesito y desde que posición en especifico. Lo que se cierra el .bat, si, es cosa del bat, a pesar de que al final ya tiene pause, no se porque pero aqui no es tema..

Ahora ando chequeando con esta función que me han enviado a ver si puedo solucionar el planteamiento inicial

Código:
Dim Digitos As String, Dia As String, Mes As String
' Primero sacamos los 4 digitos que necesitamos
Digitos = Mid("20071201.pdd", 5, 4)
' Ahora dividimos los 4 digitos en 2 separando Dia y Mes
Dia = Mid(Digitos, 3, 2)
Mes = Mid(Digitos, 1, 2)
' Pasamos los parametros al Batch
Shell "Cmd.exe /c generar.bat " & Dia & " " & Mes, vbNormalFocus
  
Estoy chequeando eso..

Art. 5
Poner el código entre las etiquetas de código que son [*code][*/code] para evitar confundir el comentario con el código y sea mas legible el mensaje.
hellfire99 está desconectado   Responder Citando
Antiguo 09-dic-2009, 09:17   #4
Veterano
 
Avatar de tkows
 
Fecha de Ingreso: febrero-2005
Amigos 6
Mensajes: 928
Gracias: 0
Agradecido 20 veces en 12 mensajes.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

La función es correcta para lo que tu quieres hacer aunque si quisieras almacenar también el año deberías declarar otra variable.

Código:
Dim Digitos As String, Dia As String, Mes As String, Año As String
' Primero sacamos los 4 digitos que necesitamos
Año = Mid("20071201.pdd", 1, 4)
Digitos = Mid("20071201.pdd", 5, 4)
' Ahora dividimos los 4 digitos en 2 separando Dia y Mes
Dia = Mid(Digitos, 3, 2)
Mes = Mid(Digitos, 1, 2)
' Pasamos los parametros al Batch
Shell "Cmd.exe /c generar.bat " & Año & " " & Dia & " " & Mes, vbNormalFocus
  
Un saludo.
__________________
Y me busco en la memoria el rincon donde perdí la razón
y la encuentro donde se me perdió cuando dijiste que no.
tkows está desconectado   Responder Citando
Antiguo 10-dic-2009, 09:48   #5
Miembro
 
Fecha de Ingreso: diciembre-2006
Amigos 0
Mensajes: 62
Gracias: 1
Agradecido 1 vez en 1 mensaje.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Gracias Tkows por la aclaración y disculpa por la cuestion de poner entre "bloques" el codigo. Por cierto una pregunta..

De acuerdo a la primera declaración de variable que es Año entonces se está declarando

Código:
Año = Mid("20071201.pdd", 1, 4)
  
Donde el archivo como tal "20071201.pdd" solo se le hace la toma de parametros para ese archivo? Me explico mejor, la funcion Mid solo esta tomando los parametros de ese archivo?

Existiría una forma de por ejemplo, crear una variable (por llamarlo de alguna manera lógica) que me permita indistintamente de cual sea el mes y el dia, ejecutarse luego de llamado el archivo .bat, algo como "2009%01%02.pdd" donde siempre que sea el año 2009 (como en este ejemplo) se ejecute sin problemas. Disculpa de antemano si esto va en la sección de batch, pero hago la pregunta aqui directamente porque la declaración de la variable es en un entorno de Visual Basic 6.0

Hago esta pregunta porque estoy analizando la situación y la función que llama al .bat solo me va a funcionar (de acuerdo a la variable antes expuesta) si el archivo es 20071201.pdd (más no creo que funcione para el archivo "20071219.pdd" por ejemplo) y bueno la idea es automatizar un poco el proceso. Gracias de antemano.
hellfire99 está desconectado   Responder Citando
Antiguo 10-dic-2009, 11:56   #6
Veterano
 
Avatar de tkows
 
Fecha de Ingreso: febrero-2005
Amigos 6
Mensajes: 928
Gracias: 0
Agradecido 20 veces en 12 mensajes.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Para eso puedes hacer varias cosas.

Por ejemplo, si la lista de archivos está en un ListBox puedes hacer:
Código:
Dim Digitos As String, Dia As String, Mes As String, Año As String, Archivo As String

For a = 0 To List1.ListCount - 1
  List1.ListIndex = a
  Archivo = List1.Text

  ' Primero sacamos los 4 digitos que necesitamos
  Año = Mid(Archivo, 1, 4)
  Digitos = Mid(Archivo, 5, 4)

  ' Ahora dividimos los 4 digitos en 2 separando Dia y Mes
  Dia = Mid(Digitos, 3, 2)
  Mes = Mid(Digitos, 1, 2)

  ' Pasamos los parametros al Batch
  Shell "Cmd.exe /c generar.bat " & Año & " " & Dia & " " & Mes, vbNormalFocus
Next
  
Y si quieres que solo sea los de X año le añades un If delante y ya está

También puedes hacerlo con un array, recorriendo el array. Si te interesa este método y no sabes como hacerlo escribe y te pongo un código

Un saludo, no se si era eso exactamente lo que preguntabas, si no, especifica más jaja ;D
__________________
Y me busco en la memoria el rincon donde perdí la razón
y la encuentro donde se me perdió cuando dijiste que no.
tkows está desconectado   Responder Citando
Antiguo 14-dic-2009, 10:26   #7
Miembro
 
Fecha de Ingreso: diciembre-2006
Amigos 0
Mensajes: 62
Gracias: 1
Agradecido 1 vez en 1 mensaje.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Gracias Tkows, en el caso que explicas tuve que re-adapatarlo para que procesara los de la lista 2 pero la función tuya como tal, funcionó perfectamente, ya es deber mio que en el archivo .bat que al cual se está invocando cambiar las variables cuando inicie cada año, pero ahora todo bien, ya me dirás que use la variable por año, pero no debo hacerlo, debido a que el sistema genera otro tipo de archivos, en donde lo comun es el Mes y Dia, por ello hize enfasis en eso. Gracias de todas maneras.

Ahora una pregunta, como te habrás dado cuenta, son archivos de procesamiento, me gustaria saber si existe una función que revise tales archivos en el directorio, y me diga cuales han sido procesados, de tal manera que el usuario final no re-procese el mismo archivo dos veces, esto es una cuestión de control interno más que todo. Si existe dicha función, te pediria que por favor me digas cual es, y yo aca veo como la enfoco a esta situación, y con los directorios del server de aca. Gracias de antemano
hellfire99 está desconectado   Responder Citando
Antiguo 15-dic-2009, 14:34   #8
Veterano
 
Avatar de tkows
 
Fecha de Ingreso: febrero-2005
Amigos 6
Mensajes: 928
Gracias: 0
Agradecido 20 veces en 12 mensajes.
Predeterminado Re: Ejecutar *.bat con parametros desde aplicación en VB 6.0

Puedes hacer que guarde un listado de los archivos que ya ha procesado en un archivo txt, por ejemplo.

Algo así como:
Código:
Dim Digitos As String, Dia As String, Mes As String, Año As String, Archivo As String

For a = 0 To List1.ListCount - 1
  List1.ListIndex = a
  Archivo = List1.Text

  ' Primero sacamos los 4 digitos que necesitamos
  Año = Mid(Archivo, 1, 4)
  Digitos = Mid(Archivo, 5, 4)

  ' Ahora dividimos los 4 digitos en 2 separando Dia y Mes
  Dia = Mid(Digitos, 3, 2)
  Mes = Mid(Digitos, 1, 2)

  ' Pasamos los parametros al Batch
  Shell "Cmd.exe /c generar.bat " & Año & " " & Dia & " " & Mes, vbNormalFocus

  Open "C:\Procesados.txt" For Append As #1
  Print #1, Archivo
  Close #1
Next
  
Y antes de procesar el archivo comprobar si existe el archivo de registro (Procesados.txt). Si no sabes como hacer esto escribe y te lo explico
__________________
Y me busco en la memoria el rincon donde perdí la razón
y la encuentro donde se me perdió cuando dijiste que no.
tkows está desconectado   Responder Citando
Antiguo 04-feb-2010, 14:59   #9
Miembro
 
Fecha de Ingreso: diciembre-2006
Amigos 0
Mensajes: 62
Gracias: 1
Agradecido 1 vez en 1 mensaje.
Predeterminado

Cita:
Iniciado por tkows Ver Mensaje

Y antes de procesar el archivo comprobar si existe el archivo de registro (Procesados.txt). Si no sabes como hacer esto escribe y te lo explico
HI, estuve un tiempo fuera de la compañia... sorry

y si por favor, si me puedes dar una explicación de como hacer esa función sería genial, gracias de antemano y tambien gracias por tu tiempo por haberme ayudado anteriormente, saludos

=)
hellfire99 está desconectado   Responder Citando
Respuesta

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks están Activado
Pingbacks están Activado
Refbacks están Activado



Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar *.bat desde ASP o PHP <- hellfire99 Php 6 29-nov-2009 21:19
abrir aplicación desde batch zero_byte Batch 5 04-ene-2009 15:04
como ejecutar un .bat desde VB ??? tekun Visual Basic y Net 2 21-mar-2007 11:19
Ejecutar el .exe desde el .txt Z-MAX Hack para newbies 2 27-feb-2007 22:38
Ejecutar desde un archivo .bat federlosa Batch 4 05-jul-2005 15:14



Portal Hacker
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0