elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  COMANDOS MULTIPLES - VB
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: COMANDOS MULTIPLES - VB  (Leído 8,674 veces)
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
COMANDOS MULTIPLES - VB
« en: 12 Junio 2014, 18:48 pm »

Hola a todos. Estoy intentando correr el cmd a través de un formulario pero no puedo realizar lo de comandos multiples.

Código
  1. If My.Computer.FileSystem.FileExists(midirectorio & "\runpkr00.exe") Then
  2.  
  3.            Dim archivo = My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
  4.            For Each file As String In archivo
  5.                'Dim archivo = My.Computer.FileSystem.GetFileInfo(File)
  6.  
  7.                Dim comando As String
  8.                Dim cmdir As String
  9.                cmdir = "cd " & midirectorio
  10.                comando = "runpkr00.exe -d " & file & ".t01"
  11.                Shell("cmd.exe /k" + cmdir + comando)  
  12.            next
  13. end if

como resultado me da:

El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos.
C:\Users\rchaconr\Documents\Visual Studio 2013\Projects\CONVERSOR DATOS GPS\CONV
ERSOR DATOS GPS\bin\Debug>

y lo que deseo es que se ejecute

> cd midirectorio
c:\midirectorio>runpkr00.exe -d archivo.t01



Espero que me puedan entender y tener un poco de su ayuda. Muchas gracias


En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: COMANDOS MULTIPLES - VB
« Respuesta #1 en: 12 Junio 2014, 19:02 pm »

Los nombres de los archivos que te devuelve las función que los lista te da la ruta completa del archivo, no solamente el nombre. Puede ser que tu error está ahí. Para resolverlo elimina el directorio raíz del nombre del archivo.


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: COMANDOS MULTIPLES - VB
« Respuesta #2 en: 12 Junio 2014, 19:25 pm »

Los nombres de los archivos que te devuelve las función que los lista te da la ruta completa del archivo, no solamente el nombre. Puede ser que tu error está ahí. Para resolverlo elimina el directorio raíz del nombre del archivo.


si coloco

Shell("cmd.exe /k" & cmdir)   

ejecuta normal, pero hasta ahí noma. Lo que quiero es que además de ejecutar ese comando también se ejecute el otro en la misma consola.
En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: COMANDOS MULTIPLES - VB
« Respuesta #3 en: 12 Junio 2014, 19:43 pm »

Ah, ok, ya te entendí.  :P

Para eso debes poner:

Código
  1. Shell("cmd.exe /k" + cmdir + " & " + comando)

El símbolo "&" hasta donde yo sé, se utiliza para separar comandos en la consola de windows. Dinos si te funciona.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: COMANDOS MULTIPLES - VB
« Respuesta #4 en: 12 Junio 2014, 21:02 pm »

Ah, ok, ya te entendí.  :P

Para eso debes poner:

Código
  1. Shell("cmd.exe /k" + cmdir + " & " + comando)

El símbolo "&" hasta donde yo sé, se utiliza para separar comandos en la consola de windows. Dinos si te funciona.

Si me corre pero solo me ejecuta el comando "cmdir" mas no el de "comando". ¿Que puede estar mal?

En si todo el codigo que tengo para el comand es:

Código
  1.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  2.        Dim midirectorio As String = TextBox1.Text
  3.  
  4.        If midirectorio = "" Then
  5.            MessageBox.Show("Debe seleccionar la ruta donde se encuentra la data", "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Error)
  6.        Else
  7.  
  8.            Try
  9.  
  10.                My.Computer.FileSystem.CopyFile(
  11.                 "C:\Program Files\convert data\runpkr00.exe",
  12.                 midirectorio & "\runpkr00.exe",
  13.                Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
  14.                 Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
  15.            Catch ex As Exception
  16.                MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
  17.  
  18.            End Try
  19.        End If
  20.  
  21.  
  22.        If My.Computer.FileSystem.FileExists(midirectorio & "\runpkr00.exe") Then
  23.  
  24.            For Each archivo In My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
  25.  
  26.                Dim comando As String
  27.                Dim cmdir As String
  28.                Dim nombre As String
  29.                nombre = My.Computer.FileSystem.GetName(archivo)
  30.                cmdir = "cd " & midirectorio
  31.                comando = "runpkr00.exe -d " & nombre & ".t01"
  32.                Shell("cmd.exe /k" + cmdir + " & " + comando)
  33.  
  34.            Next
  35.  
  36.        End If
  37.  
  38.  
  39.  
  40.    End Sub
« Última modificación: 12 Junio 2014, 22:38 pm por rochro » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: COMANDOS MULTIPLES - VB
« Respuesta #5 en: 13 Junio 2014, 07:22 am »

Mmmmmm, no sé en qué esté fallando, pero lo más seguro es que sea en la forma en que se construye la cadena.

Intenta poniendo un punto de interrupción y copia toda la cadena como debería salir al final. Luego escribe esa cadena en una consola de comandos y ve si también te da error. si es así entonces no es problema de programación sino de la construcción de la cadena.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: COMANDOS MULTIPLES - VB
« Respuesta #6 en: 13 Junio 2014, 07:29 am »

no te sirve mas crear una tubería (pipe) como el ejemplo de esta pagina?

http://www.vbforums.com/showthread.php?381405-Automate-Command-Prompt-Window-(CMD)-Redirect-Output-to-Application-2003-2005
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: COMANDOS MULTIPLES - VB
« Respuesta #7 en: 13 Junio 2014, 21:32 pm »

Lex, no conocía la existencia de los métodos para redirigir la salida y la entrada de las aplicaciones.

Rochro, el método que menciona Lex te permite enviar los comandos uno a uno sin necesidad de abrir múltiples ventanas. Esta sería una opción mejor.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
rochro

Desconectado Desconectado

Mensajes: 42


Ver Perfil
Re: COMANDOS MULTIPLES - VB
« Respuesta #8 en: 17 Junio 2014, 19:50 pm »

Lex, no conocía la existencia de los métodos para redirigir la salida y la entrada de las aplicaciones.

Rochro, el método que menciona Lex te permite enviar los comandos uno a uno sin necesidad de abrir múltiples ventanas. Esta sería una opción mejor.

Chicos! Muchas gracias, ya lo adapté pero hay algo que no me sale que es que si tengo en mi directorio mas de un archivo sólo lo aplica con uno y no con todos los que están en ese directorio.

Código
  1.   Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  2.        Dim midirectorio As String = TextBox1.Text
  3.  
  4.        If midirectorio = "" Then
  5.            MessageBox.Show("Debe seleccionar la ruta donde se encuentra la data", "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Error)
  6.        Else
  7.  
  8.            Try
  9.  
  10.                My.Computer.FileSystem.CopyFile(
  11.                 "C:\Program Files\convert data\runpkr00.exe",
  12.                 midirectorio & "\runpkr00.exe",
  13.                Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
  14.                 Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)
  15.            Catch ex As Exception
  16.                MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
  17.  
  18.            End Try
  19.        End If
  20.  
  21.        If My.Computer.FileSystem.FileExists(midirectorio & "\runpkr00.exe") Then
  22.            Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
  23.            CMDThread.Start()
  24.        End If
  25.  
  26.    End Sub
  27.    Private Sub CMDAutomate()
  28.        Dim midirectorio As String = TextBox1.Text
  29.        Dim myprocess As New Process
  30.        Dim StartInfo As New System.Diagnostics.ProcessStartInfo
  31.        StartInfo.FileName = "cmd"
  32.        StartInfo.RedirectStandardInput = True
  33.        StartInfo.RedirectStandardOutput = True
  34.        StartInfo.UseShellExecute = False
  35.        StartInfo.CreateNoWindow = True
  36.        myprocess.StartInfo = StartInfo
  37.        myprocess.Start()
  38.        For Each archivo As String In My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
  39.            Dim SR As System.IO.StreamReader = myprocess.StandardOutput
  40.            Dim SW As System.IO.StreamWriter = myprocess.StandardInput
  41.            Dim comando As String
  42.            Dim cmdir As String
  43.            Dim nombre As String
  44.            nombre = My.Computer.FileSystem.GetName(archivo)
  45.            cmdir = "cd " & midirectorio
  46.            comando = "runpkr00.exe -d " & nombre
  47.  
  48.            SW.WriteLine(cmdir)
  49.            SW.WriteLine(comando)
  50.            Results = SR.ReadToEnd
  51.            SW.Close()
  52.            SR.Close()
  53.            Invoke(Finished)
  54.        Next
  55.    End Sub
« Última modificación: 17 Junio 2014, 22:03 pm por rochro » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: COMANDOS MULTIPLES - VB
« Respuesta #9 en: 18 Junio 2014, 06:26 am »

No estoy seguro pero creo que tu problema puede estar en:

Código
  1. Invoke(Finished)

Si lo que quieres es que el método se invoke con cada archivo entonces está bien. Pero si lo que quieres es que se invoque al final de todo el procedimiento entonces deberías ponerlo después del "next".

Tampoco creo que haya necesidad de cerrar los streams en cada iteración por lo tanto también deberías provar dejando el código como sigue:

Código
  1. Dim SR As System.IO.StreamReader = myprocess.StandardOutput
  2. Dim SW As System.IO.StreamWriter = myprocess.StandardInput
  3. Dim comando As String
  4. Dim cmdir As String
  5. Dim nombre As String
  6.        For Each archivo As String In My.Computer.FileSystem.GetFiles(midirectorio, FileIO.SearchOption.SearchAllSubDirectories, "*.t01")
  7.            nombre = My.Computer.FileSystem.GetName(archivo)
  8.            cmdir = "cd " & midirectorio
  9.            comando = "runpkr00.exe -d " & nombre
  10.  
  11.            SW.WriteLine(cmdir)
  12.            SW.WriteLine(comando)
  13.            Results = SR.ReadToEnd
  14.            Invoke(Finished)
  15.        Next
  16.        SW.Close()
  17.        SR.Close()
  18.    End Sub

Para dejar más limpio el bucle.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Conexiones multiples
Programación Visual Basic
demoniox12 5 2,690 Último mensaje 7 Diciembre 2007, 15:06 pm
por demoniox12
multiples checkbox en php
PHP
pet_cx 3 40,864 Último mensaje 29 Septiembre 2008, 04:45 am
por pet_cx
Multiples comandos simultaneos en mismo terminal.
Scripting
RocKHounD 0 6,170 Último mensaje 12 Enero 2011, 18:26 pm
por RocKHounD
Multiples Bucles o Multiples Esperas
.NET (C#, VB.NET, ASP)
DarkMatrix 8 5,545 Último mensaje 5 Septiembre 2011, 23:11 pm
por EddyW
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines