Probema al ejecutar un .bat con shell

Iniciado por Bardick, 1 Julio 2008, 21:04 PM

0 Miembros y 2 Visitantes están viendo este tema.

Bardick

Gracias por vuestras respuestas,he usado este codigo y funciona:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ruta As String
        ruta = "C:\Archivos de programa\archivo.bat"
        Shell(ruta)

    End Sub


Pero hay un problemilla... y es que si ejecuto el archivo.bat (el bat contiene: del archivo.bat) de esa manera el bat para que funcionase correctamente deberia usar el comado + la ruta del archivo.bat por ej:

del "C:\Archivos de programa\archivo.bat"

Pero es que resulta que no me sirve porque para el programa que estoy haciendo la variable ruta contiene lo que lee en una clave del registro y entonces puede ser diferente para otras personas,y ese archivo bat se copiaria en el directorio de la variable ruta lo cual si el archivo.bat tiene el directorio: C:\Archivos de programa\archivo.bat y para otra persona fuera: C:\otro directorio\archivo.bat  ya no me serviria.  :-\

Entonces pregunto.. xD Podria generar con visual basic un archivo de texto que contenga lo siguiente:

del ruta archivo.bat

En este caso la ruta seria el directorio que lee del registro,despues renombraria ese archivo.txt a archivo.bat y lo moviera con Shell (ruta) o otro comando.

Seria posible hacer eso...?

cassiani

#11
CitarPodria generar con visual basic un archivo de texto que contenga lo siguiente:

Código:

del ruta archivo.bat

Supongo que quedo claro que esto No es Net!!

No necesitas la ruta para que el bat se borre a si mismo, no se que estas inventando...

mira este ejemplo:

Código (vb) [Seleccionar]
Private Sub CrearBat()
Dim Canal As Integer
    Canal = FreeFile
    Open "borrar.bat" For Output As #Canal
       
        'aqui cualquier instrucción, como que mate el proceso que lo creo por ejemplo
         
         Print #Canal, "del borrar.bat"
    Close #Canal
End Sub

Private Sub CmdEjecutarBat_Click()
    'Ejecutamos el .bat y oculto
    Shell "borrar.bat", vbHide
End Sub

Private Sub Form_Load()
    CrearBat 'Creamos el fichero .bat
End Sub


Fíjate que creo un .bat desde vb dentro le coloco que haga lo que se me antoje y luego se autodestruya, en este caso no necesite la ruta, pero si te apetece, puedes hacer uso del "App.Path

Bardick

Con el codigo que me pusiste no me fucniono  :( use este otro:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim path As String = ruta & "\archivo.bat"
        Dim fi As FileInfo = New FileInfo(path)
        Dim fs As FileStream
        If fi.Exists = False Then
            fs = fi.Create()
            Dim info As Byte() = New UTF8Encoding(True).GetBytes("del" ruta & "\archivo.bat")
            fs.GetBytes("header for the file.")
            fs.Write(info, 0, info.Length)
            fs.Close()
        End If
        Shell(path)
    End Sub


Igualmente gracias de todos modos,  por fin he conseguido resolver el problema!  :xD

‭‭‭‭jackl007

prueba todos los scripts en otro ordenador con VB 6.0 vale?