Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ejecutar archivo bat desde visual basic

Estas en el tema de Ejecutar archivo bat desde visual basic en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Tengo un problema al ejecutar el comando shell de visual para ejecutar un archivo .bat que transfiere archivos a un sitio ftp. ...
  #1 (permalink)  
Antiguo 13/09/2004, 13:03
 
Fecha de Ingreso: julio-2003
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
Ejecutar archivo bat desde visual basic

Hola a todos.

Tengo un problema al ejecutar el comando shell de visual para ejecutar un archivo .bat que transfiere archivos a un sitio ftp.
Este es el código que utilizo para hacerlo

Ejecuta = Shell("C:\traspaso.bat",1)

Según lo que entiendo solo con esta instrucción debiera hacerlo sin problemas, pero no lo hace, cabe mencionar que si coloco un programa .exe (Notepad.Exe) lo hace sin problemas, pero con los bat no lo ejecuta.?????

Bueno saludos a todos
  #2 (permalink)  
Antiguo 13/09/2004, 14:25
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Oarrasco:
Cita:
cabe mencionar que si coloco un programa .exe (Notepad.Exe) lo hace sin problemas, pero con los bat no lo ejecuta.?????
Bueno, porque los exe, siempre tienen definido su directorio de trabajo. Y normalmente, toman sus referencias de las carpetas de sistema, mientras que un bat...
El archivo bat, debe tener un directorio de trabajo, es decir, una ruta desde la cual llama a los archivos o aplicaciones. Cuando tú lo ejecutas con un doble click, desde el Explorador de Windows por ejemplo, el directorio de trabajo es el directorio donde se encuentra el archivo. Pero cuando lo llamas desde VB, el directorio de trabajo es el directorio donde reside la aplicación de VB. Entonces, para que te funcione la llamada a Shell(), debes tener el bat y el exe en el mismo directorio (con las rutas del bat corregidas). Haz la prueba...
Ya que la funcionalidad de Shell() es muy limitada, si no fuera posible que el bat estuviera en el mismo directorio que el exe, puedes usar la función API ShellExecute():

Código:
'A nivel de módulo
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hwnd As Long, _
        ByVal lpOperation As String, _
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long

'La función la lamarías así:
    Call ShellExecute(0&, vbNullString, "traspaso.bat", vbNullString, "C:\", 1&)
Con esta función puedes hacer grandes maravillas, y como puedes ver a pesar de que tiene más parámetros que Shell() de VB, su sintaxis es muy sencilla.

Saludos.
  #3 (permalink)  
Antiguo 13/09/2004, 16:23
 
Fecha de Ingreso: julio-2003
Mensajes: 37
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias amigo, con lo que me acabas de explicar me quedo clarisimo....

Saludos
  #4 (permalink)  
Antiguo 22/12/2007, 12:44
Ssk
 
Fecha de Ingreso: diciembre-2007
Mensajes: 1
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Ejecutar archivo bat desde visual basic

Yo tengo un problema con lo de ejecutar el punto bat y me pone un mensaje de error al ejecutarlo que es el siguiente:

"Una llamada a la función PInvoke 'Inscripcion!Inscripcion.Form1::ShellExecute' impidió la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros de llamada de la firma PInvoke coinciden con la firma no administrada de destino".

Codigo del programa:

Public Class Form1

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As Integer

x = 1
While x = 1

Call ShellExecute(0&, vbNullString, "hola.bat", vbNullString, "C:\Documents and Settings\Sasuke\Escritorio", 1&)

End While
End Sub
End Class

Soy nuevo en visual y ahora toy experimentando con ficheros .bat ; alguien me podria echar una mano?? muxas gracias

Última edición por Ssk; 22/12/2007 a las 12:45 Razón: fallo en la escritura
  #5 (permalink)  
Antiguo 09/10/2008, 16:59
 
Fecha de Ingreso: octubre-2007
Mensajes: 10
Antigüedad: 16 años, 6 meses
Puntos: 0
Exclamación Respuesta: Ejecutar archivo bat desde visual basic

estoy con el mismo problema si cambio el archivo del .bat me puede funcionar o que parametros necesito
http://norterock.blogspot.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:20.