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