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:
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?
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 ") ??
Citarpero 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
Me equivoque en el post anterior en poner las comillas para la variable :-\ en visual basic lo tengo bien, con las comillas puestas.
Cita de: 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 ") ??
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:
del archivo.bat
Y es raro porque es una instruccion simple que deberia ejecutar y borrarse el archivo.bat sin problemaspero no lo hace >:(
esto funciona:
Private Sub Command1_Click()
Dim ruta As String
ruta = "C:\Process.bat"
Shell ruta
End Sub
verifica la ruta correcta.
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.
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:
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?
Cita de: 70N1 en 2 Julio 2008, 00:58 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).
el codigo que te puse (el ultimo) funciona bien, nose porque a ti no te va.
aparte de que estas usando el visual baisc 2008 ,copiaste el evento del boton como si se tratara de un boton de visual basic...
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...?
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:
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
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
prueba todos los scripts en otro ordenador con VB 6.0 vale?