Saltar al contenido

¿Cómo ejecutar comandos de DOS/CMD/Símbolo del sistema desde VB.NET?

Hola usuario de nuestra web, hemos encontrado la solución a tu pregunta, has scroll y la encontrarás un poco más abajo.

Solución:

Podrías probar este método:

Public Class MyUtilities
    Shared Sub RunCommandCom(command as String, arguments as String, permanent as Boolean) 
        Dim p as Process = new Process() 
        Dim pi as ProcessStartInfo = new ProcessStartInfo() 
        pi.Arguments = " " + if(permanent = true, "/K" , "/C") + " " + command + " " + arguments 
        pi.FileName = "cmd.exe" 
        p.StartInfo = pi 
        p.Start() 
    End Sub
End Class

llamar, por ejemplo, de esta manera:

MyUtilities.RunCommandCom("DIR", "/W", true)

EDITAR: Para el comando múltiple en una línea, el key son los & | && y || conectores de comando

  • A y B → ejecutar el comando A, luego ejecutar el comando B.
  • un | B → ejecutar el comando A y redirigir toda su salida a la entrada del comando B.
  • A y B → ejecute el comando A, evalúe el nivel de error después de ejecutar el Comando A, y si el código de salida (nivel de error) es 0, solo entonces ejecute el comando B.
  • un || B → ejecute el Comando A, evalúe el código de salida de este comando y si es cualquier cosa menos 0, solo entonces ejecute el comando B.

Puedes probar esto para ejecutar el comando entonces cmd salidas

Process.Start("cmd", "/c YourCode")

Puedes probar esto para ejecutar el comando y dejar cmd Esperar más comandos

Process.Start("cmd", "/k YourCode")

Me inspiró la respuesta de Steve, pero pensé en agregarle un poco de brillo. Me gusta hacer el trabajo por adelantado de escribir métodos de extensión para que luego tenga menos trabajo llamando al método.

Por ejemplo, con la versión modificada de la respuesta de Steve a continuación, en lugar de hacer esta llamada…

MyUtilities.RunCommandCom("DIR", "/W", true)

De hecho, puedo simplemente escribir el comando y llamarlo desde mis cadenas de esta manera…

Directamente en código.

Call "CD %APPDATA% & TREE".RunCMD()

O

De una variable.

Dim MyCommand = "CD %APPDATA% & TREE"
MyCommand.RunCMD()

O

Desde un cuadro de texto.

textbox.text.RunCMD(WaitForProcessComplete:=True)


Los métodos de extensión deberán colocarse en un módulo público y llevar el attribute sobre el submarino También querrás agregar Imports System.Runtime.CompilerServices en la parte superior de su archivo de código.

Hay mucha información en SO sobre los métodos de extensión si necesita más ayuda.


Método de extensión

Public Module Extensions
''' 
''' Extension method to run string as CMD command.
''' 
''' [String] Command to run.
''' [Boolean](Default:False) Option to show CMD window.
''' [Boolean](Default:False) Option to wait for CMD process to complete before exiting sub.
''' [Boolean](Default:False) Option to keep window visible after command has finished. Ignored if ShowWindow is False.

Public Sub RunCMD(command As String, Optional ShowWindow As Boolean = False, Optional WaitForProcessComplete As Boolean = False, Optional permanent As Boolean = False)
    Dim p As Process = New Process()
    Dim pi As ProcessStartInfo = New ProcessStartInfo()
    pi.Arguments = " " + If(ShowWindow AndAlso permanent, "/K", "/C") + " " + command
    pi.FileName = "cmd.exe"
    pi.CreateNoWindow = Not ShowWindow
    If ShowWindow Then
        pi.WindowStyle = ProcessWindowStyle.Normal
    Else
        pi.WindowStyle = ProcessWindowStyle.Hidden
    End If
    p.StartInfo = pi
    p.Start()
    If WaitForProcessComplete Then Do Until p.HasExited : Loop
End Sub
End Module

Aquí puedes ver las comentarios y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *