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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ms-dos vb.net
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ms-dos vb.net  (Leído 7,968 veces)
NetJava

Desconectado Desconectado

Mensajes: 195



Ver Perfil
ms-dos vb.net
« en: 15 Febrero 2012, 12:35 pm »

Buenas!!! Me estoy rallando un monton, y eso que hay bastante información.

Podríais aclararme como se pueden ejecutar comandos msdos desde .net, por ejemplo crear una carpeta¿?

Muchas gracias!!


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: ms-dos vb.net
« Respuesta #1 en: 15 Febrero 2012, 12:48 pm »

Hace poco programé mi propia línea de comandos en VB .NET, ya después codee una shell remota.

Bajo mi experiencia, conozco dos formas de hacer lo que pides, segun quieras capturar el output del código o sólo ejecutarlo.

Si sólo buscas ejecutar el código utiliza la función Shell, la cual ejecutará cualquier comando que desees.
Un breve ejemplo:

Código
  1. Dim Comando As String = "CMD /C netstat -ano"
  2. Shell(Comando)
  3. MsgBox("Comando Ejecutado")
  4.  

Cabe decir que si quieres capturar el output de esta manera se haría de la siguiente forma:
Código:
CMD /C netstat -ano > C:\output.txt

PERO, hay otra forma más limpia, más profesional y no tan díficil de comprender, que ya es utilizando la clase Process de .NET
Te explico: en la clase Process hay propiedades para asignar el comando y los argumentos de éste para posteriormente ejecutarlos, ya sea en segundo plano sin mostrar la ventana al usuario o mostrándola. Además de esto, es muy cómodo utilizar esta clase para capturar el output o salida del comando, ya que no lo tiene que guardar en ningún sitio en texto plano.

Ejemplo:

Código
  1. Private Sub Ejecutar_Comando (Byval Comando As String, Byval Argumentos As String)
  2. Dim p As New Process()
  3. With p.StartInfo
  4.                .UseShellExecute = False
  5.                .WindowStyle = ProcessWindowStyle.Hidden
  6.                .RedirectStandardOutput = True
  7.                .RedirectStandardError = False
  8.                .CreateNoWindow = True
  9.                .FileName = Comando
  10.                .Arguments = Argumentos
  11.                .WorkingDirectory = "C:\WINDOWS\SYSTEM32\"
  12.            End With
  13.            p.Start()
  14. End Sub
  15.  

Échale imaginación y ganarás.

Un Saludo.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

NetJava

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: ms-dos vb.net
« Respuesta #2 en: 15 Febrero 2012, 13:54 pm »

Buenas, muchas gracias.

Lo del shell, perfecto. La de abajo me esta tocando la moral un poco. Como comando he probado de todas las posibilidades, con un ejemplo simple, como crear una carpeta de en C:\, en argumento por lo que he visto no es necesario introducir nada en este caso. Pues no me quiere crear la carpeta...

No se te pongo los comando que he probado:   (han sido tantas variantes)
CMD /C md hola
md hola
CMD md hola
.
.
.
En línea

NetJava

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: ms-dos vb.net
« Respuesta #3 en: 15 Febrero 2012, 15:31 pm »

Buenas, de momento para ir avanzando me estoy con la primera forma.

Pero ya os hago el preguntote!!! Yo sigo intentandolo desde luego.

Como se podría ejecutar esto desde .net con shell:

Código:
cd\
cd Program Files
cd MySQL
cd MySQL Server 5.1
cd bin
MySQLInstanceConfig.exe -i -q "-lC:\mysql_install_log.txt"
"-nMySQL Server 5.1" "-pC:\Program Files\MySQL\MySQL Server
5.1" -v5.1.59 "-tC:\Program Files\MySQL\MySQL Server
5.0\my-template.ini" "-cC:\mytest.ini" ServerType=DEVELOPMENT
DatabaseType=MIXED ConnectionUsage=DSS Port=3306 ServiceName=db_portal
RootPassword=root

Muchas gracias!!
En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: ms-dos vb.net
« Respuesta #4 en: 15 Febrero 2012, 18:58 pm »

Buenas, de momento para ir avanzando me estoy con la primera forma.

Pero ya os hago el preguntote!!! Yo sigo intentandolo desde luego.

Como se podría ejecutar esto desde .net con shell:

Vamos por partes, la respuesta a esta pregunta es sencilla :P

Se me ocurre que podrías crear un archivo .bat con el código que quieres automatizar y lllamarlo o ejecutarlo desde VB.NET con un simple:
Código
  1. Private Sub Ejecutar_Code(Byval ruta_fichero As String)
  2. Shell(ruta_fichero)
  3. End Sub
  4.  

Donde ruta_fichero es la variable de tipo String que almacena en memoria la dirección del path o ruta donde se encuentra tu archivo .bat a ejecutar.
Con esto debería ejecutarse tu archivo.

Hay un truquillo que implementé en .NET y es el siguiente:

Cuando pasas el comando y el argumento como argumento al método que crea el proceso de ejecucción del comando se asignaran a las variables locales de dicho método lo que hayas pasado. Te aconsejo que separes dicho código de ejecucción del comando en dos partes:

Código
  1. Private Sub Ejecutar_Comando(Byval Comando As String, Byval Argumentos As String)
  2. If Argumentos IsNot String.Empty 'si la variable argumentos no está vacia...
  3. 'Construyes el comando a ejecutar CON argumentos
  4.  
  5. Else
  6.  
  7. 'Construyes el comando a ejecutar SIN argumentos
  8.  
  9. End If
  10.  
¿Como saber si el comando que has introducido tiene argumentos? Bien, buscas los siguientes caracteres en el TextBox donde introduces el comando: "-" , "/" y los espacios (Chrw(32))

Espero que hayas entendido la explicación, cualquier duda ya sabes.

Saludos.
« Última modificación: 15 Febrero 2012, 19:01 pm por kub0x » En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines