Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Bardick en 1 Julio 2008, 21:04 pm



Título: Probema al ejecutar un .bat con shell
Publicado por: Bardick en 1 Julio 2008, 21:04 pm
Buenas,tengo un problemilla con el comando shell y es que cuando lo uso en visual basic me ejecuta el archivo.bat pero me sale una ventana de MS-Dos diciendo que no se reconoce como un comando interno o externo,entonces no me funciona.

El codigo que uso es el siguiente:

Código:
variable = C:\Archivos de programa
Shell (variable & "\archivo.bat")

Como puedo entonces ejecutar un archivo.bat desde visual basic y que me lo ejecute correctamente sin dar ningun problema?


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: ‭‭‭‭jackl007 en 1 Julio 2008, 21:05 pm
variable = C:\Archivos de programa

sin comillas?
prueba con esto:
Shell (variable & "\archivo.bat ")
(hay un espacio).

y dime te funciona esto:
Shell ("C:\Archivos de programa\archivo.bat ") ??


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: Novlucker en 1 Julio 2008, 21:06 pm
Citar
pero me sale una ventana de MS-Dos diciendo que no se reconoce como un comando interno o externo

Obviamente la ejecución del *.bat es correcta, eso está bien, lo que esta mal es el code del bat  :-X

Que tienes en el *.bat  :huh:

Saludos


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: Bardick en 1 Julio 2008, 23:18 pm
Me equivoque en el post anterior en poner las comillas para la variable  :-\ en visual basic lo tengo bien, con las comillas puestas.

variable = C:\Archivos de programa

sin comillas?
prueba con esto:
Shell (variable & "\archivo.bat ")
(hay un espacio).

y dime te funciona esto:
Shell ("C:\Archivos de programa\archivo.bat ") ??


Lo he probado asi y tampoco me funciona

He probado como me habeis dicho pero me sigue sin funcionar,en el bat simplemente tengo esto:

Código:
del archivo.bat

Y es raro porque es una instruccion simple que deberia ejecutar y borrarse el archivo.bat sin problemaspero no lo hace  >:(


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: ‭‭‭‭jackl007 en 2 Julio 2008, 00:23 am
esto funciona:
Código
  1. Private Sub Command1_Click()
  2. Dim ruta As String
  3. ruta = "C:\Process.bat"
  4. Shell ruta
  5. End Sub

verifica la ruta correcta.


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: 70N1 en 2 Julio 2008, 00:58 am
El bat que intentas eliminar es el mismo bat que estas ejecutando?.


Por que si no me equivoco no se puede elimar a si mismo mientras se este ejecutando.
Tendrias que ejecutar el bat como un proceso y cuando finalice el proceso eliminarlo.



Título: Re: Probema al ejecutar un .bat con shell
Publicado por: Bardick en 2 Julio 2008, 01:31 am
Que usas visual basic 6?

Es que yo uso visual basic 2008 y cuando pongo shell ruta  me lo cambia automaticamente a Shell (ruta).

He usado el mismo codigo que tu (cambiando la ruta) pero no me funciona  :-(

(http://img128.imageshack.us/img128/3125/baterrordd1.th.jpg) (http://img128.imageshack.us/my.php?image=baterrordd1.jpg)

En cuanto a lo del archivo.bat tambien he probado poniendo:

Código:
start firefox

Y tampoco funciona,si lo hago manualmente se ejecuta perfectamente pero desde la shell de visual basic no  :-\

Mi windows Xp esta instalado en la unidad D:,podria ser que al usar la shell de visual basic llamando un archivo de la unidad C: diera problemas?


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: cassiani en 2 Julio 2008, 01:46 am
Por que si no me equivoco no se puede elimar a si mismo mientras se este ejecutando.
Tendrias que ejecutar el bat como un proceso y cuando finalice el proceso eliminarlo.

Si te equivocas, los .Bat si se eliminan a si mismo...

Este es el sub-foro de vb6  :-\ y los ejemplos que aqui te dan son pensados en el (obvio).


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: ‭‭‭‭jackl007 en 2 Julio 2008, 01:47 am
el codigo que te puse (el ultimo) funciona bien, nose porque a ti no te va.


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: seba123neo en 2 Julio 2008, 02:20 am
aparte de que estas usando el visual baisc 2008 ,copiaste el evento del boton como si se tratara de un boton de visual basic...


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: Bardick en 2 Julio 2008, 02:56 am
Gracias por vuestras respuestas,he usado este codigo y funciona:

Código:
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:

Código:
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:

Código:
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...?


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: cassiani en 2 Julio 2008, 04:43 am
Citar
Podria 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
  1. Private Sub CrearBat()
  2. Dim Canal As Integer
  3.    Canal = FreeFile
  4.    Open "borrar.bat" For Output As #Canal
  5.  
  6.        'aqui cualquier instrucción, como que mate el proceso que lo creo por ejemplo
  7.  
  8.         Print #Canal, "del borrar.bat"
  9.    Close #Canal
  10. End Sub
  11.  
  12. Private Sub CmdEjecutarBat_Click()
  13.    'Ejecutamos el .bat y oculto
  14.    Shell "borrar.bat", vbHide
  15. End Sub
  16.  
  17. Private Sub Form_Load()
  18.    CrearBat 'Creamos el fichero .bat
  19. 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


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: Bardick en 3 Julio 2008, 02:18 am
Con el codigo que me pusiste no me fucniono  :( use este otro:

Código:
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


Título: Re: Probema al ejecutar un .bat con shell
Publicado por: ‭‭‭‭jackl007 en 3 Julio 2008, 02:27 am
prueba todos los scripts en otro ordenador con VB 6.0 vale?