locked
Ejecutar un .bat añadido al proyecto de Vb.net RRS feed

  • Pregunta

  • Buenos días, buscaba la forma de ejecutar un archivo .bat que está incrustado en mi proyecto.

    Necesito que se ejecute en un evento Load (al abrirse el programa).

    Como otra alternativa, el programa de Vb.net podría ejecutar las tres líneas de código del archivo .bat, pero no supe bien cómo hacer esto.


    FJ Pino

    lunes, 13 de abril de 2015 19:53

Respuestas

  • Debes ejecutar el Process con el método 

    Process.WaitForExit (Método)

     myProcess.Start()
     myProcess.WaitForExit()


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 14 de abril de 2015 10:58
  • Hola querido amigo tengo esta propuesta para tu problema:

    Dim psi As New ProcessStartInfo("Ruta de tu archivo")
    psi.RedirectStandardError = True
    psi.RedirectStandardOutput = True
    psi.CreateNoWindow = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    
    Dim process As Process = Process.Start(psi)

    Espero haberte ayudado gracias.

    lunes, 13 de abril de 2015 20:11
  • Prueba asi a ver que te parece:

    im Ruta As String
    
            Ruta = "C:\BackUps"
    
            If Not Directory.Exists(Ruta) Then
                Directory.CreateDirectory(Ruta)
                Shell("C:\Datos\BACKUP.BAT", AppWinStyle.NormalFocus, True)
                MsgBox("BackUp Finalizado Correctamente", MsgBoxStyle.Exclamation, Title:="Proceso Concluido")
            Else : Shell("C:\Datos\BACKUP.BAT", AppWinStyle.NormalFocus, True)
                MsgBox("BackUp Finalizado Correctamente", MsgBoxStyle.Exclamation, Title:="Proceso Concluido")
            End If


    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    lunes, 13 de abril de 2015 23:01
  • Hola FJ Pino que codigos tiene dentro de archivos .bat

    Puedes ejecutar el cmd para los codigos .bat abajo te dejo un proyecto mio hecho para internet explorer

    taskkill /im "iexplore.exe"

      Private WithEvents myProcess As Process

      myProcess = New Process()

            myProcess.StartInfo.UseShellExecute = True
            myProcess.StartInfo.FileName = "cmd.exe"
            myProcess.StartInfo.CreateNoWindow = True

            myProcess.StartInfo.Arguments = "/Ctaskkill /im iexplore.exe"

            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            myProcess.EnableRaisingEvents = True

            myProcess.Start()

    es para cerrar la aplicacion de internet explorer y otra cosa el codigo se ejecuta en un evento load en mi proyecto

    Proyecto

    Saludos




    martes, 14 de abril de 2015 2:51

Todas las respuestas

  • Hola querido amigo tengo esta propuesta para tu problema:

    Dim psi As New ProcessStartInfo("Ruta de tu archivo")
    psi.RedirectStandardError = True
    psi.RedirectStandardOutput = True
    psi.CreateNoWindow = False
    psi.WindowStyle = ProcessWindowStyle.Hidden
    psi.UseShellExecute = False
    
    Dim process As Process = Process.Start(psi)

    Espero haberte ayudado gracias.

    lunes, 13 de abril de 2015 20:11
  • Gracias por la respuesta, y en cuanto a lo que propusiste, no funcionó correctamente. La ventana de cmd se abre una milésima de segundo y desaparece, cuando al final del código tiene un @pause para detenerlo y comprobar que se ejecutó correctamente. (Previamente cambié el ProcessWindowStyle de Hidden a Normal)

    Intenté poniendo el nombre del .bat que está incrustado en el proyecto y ni siquiera apareció, pero cuando lo ubiqué en el escritorio y puse la ruta exacta, apareció lo que mencioné antes, ese parpadeo del cmd.


    FJ Pino

    lunes, 13 de abril de 2015 22:57
  • Prueba asi a ver que te parece:

    im Ruta As String
    
            Ruta = "C:\BackUps"
    
            If Not Directory.Exists(Ruta) Then
                Directory.CreateDirectory(Ruta)
                Shell("C:\Datos\BACKUP.BAT", AppWinStyle.NormalFocus, True)
                MsgBox("BackUp Finalizado Correctamente", MsgBoxStyle.Exclamation, Title:="Proceso Concluido")
            Else : Shell("C:\Datos\BACKUP.BAT", AppWinStyle.NormalFocus, True)
                MsgBox("BackUp Finalizado Correctamente", MsgBoxStyle.Exclamation, Title:="Proceso Concluido")
            End If


    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    lunes, 13 de abril de 2015 23:01
  • Gracias por la respuesta Dany Solis, pero no veo la forma de aplicar el código que me pasaste. Quiero decir que lo que yo busco es una manera de ejecutar un batch que tengo importado dentro del proyecto o de ejecutar varias líneas de código CMD directamente en un evento Load (Por ejemplo, con el comando Shell, que hasta donde vi sólo ejecuta una línea), no de buscarlo dentro del disco y ejecutarlo.

    FJ Pino

    lunes, 13 de abril de 2015 23:33
  • Hola FJ Pino que codigos tiene dentro de archivos .bat

    Puedes ejecutar el cmd para los codigos .bat abajo te dejo un proyecto mio hecho para internet explorer

    taskkill /im "iexplore.exe"

      Private WithEvents myProcess As Process

      myProcess = New Process()

            myProcess.StartInfo.UseShellExecute = True
            myProcess.StartInfo.FileName = "cmd.exe"
            myProcess.StartInfo.CreateNoWindow = True

            myProcess.StartInfo.Arguments = "/Ctaskkill /im iexplore.exe"

            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
            myProcess.EnableRaisingEvents = True

            myProcess.Start()

    es para cerrar la aplicacion de internet explorer y otra cosa el codigo se ejecuta en un evento load en mi proyecto

    Proyecto

    Saludos




    martes, 14 de abril de 2015 2:51
  • Debes ejecutar el Process con el método 

    Process.WaitForExit (Método)

     myProcess.Start()
     myProcess.WaitForExit()


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 14 de abril de 2015 10:58
  • Intenta de esta manera en el load de tu formulario:

    System.Diagnostics.Process.Start("BACKUP.bat")


    Aprendiz de todos maestro de nadie. Saludos desde Cd. Juarez Chihuahua Mexico. DS.

    martes, 14 de abril de 2015 16:48