La pregunta es autoexplicativa. Sería fantástico si el código tuviera una línea de longitud (algo que ver con "Process.Start("...")
"?). Investigué la web, pero solo encontré ejemplos antiguos y otros que no funcionan (al menos para mí). Quiero usar esto en mi biblioteca de clase, para ejecutar comandos de Git (si eso ayuda?).¿Cómo ejecutar comandos DOS/CMD/Command Prompt desde VB.NET?
Respuesta
Usted podría intentar 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
llamada, por ejemplo, de esta manera:
MyUtilities.RunCommandCom("DIR", "/W", true)
EDIT: Para el comando múltiples en una sola línea la clave son el & | & & y || conectores de mando
- Un & B → comando de ejecución A, a continuación, ejecutar el comando B.
- A | B → comando de ejecución A, y redirigir todo esto es la salida a la entrada de mando B.
- Un & & B → ejecutar el comando A, evaluar el nivel de error después de ejecutar Comando A, y si el código de salida (nivel de error) es 0, solo luego ejecute el comando B.
- A || B → ejecutar comandos A, evaluar el código de salida de este comando y si es cualquier cosa menos 0, sólo entonces ejecutar el comando B.
¡Hola! Usé este código (https://gist.github.com/2465024) y cuando ejecuté su comando (cambié el nombre a "' runCommand' "y lo usé - ¡así que ese no es el problema!), Obtengo un" 'La referencia a un miembro no compartido requiere un error de referencia de objeto.". ¿Alguna idea de por qué? –
Por cierto, funciona cuando está en la misma clase, sin embargo, lo usé en una Biblioteca de clases, que importé a mi proyecto de Windows Forms. ¿Alguna idea de por qué no está funcionando? –
Además, ¿hay alguna manera de ejecutar varios comandos a la vez? Algo como "' Ocultar cmd, ejecutar el primer comando, ocultar cmd, ejecutar el segundo comando, mostrar cmd' ". –
Usted puede intentar esto para ejecutar comandos Entonces cmd
salidas
Process.Start("cmd", "/c YourCode")
Usted puede probar esto para ejecutar el comando y dejó cmd
esperar más comandos
Process.Start("cmd", "/k YourCode")
Sub systemcmd(ByVal cmd As String)
Shell("cmd /c """ & cmd & """", AppWinStyle.MinimizedFocus, True)
End Sub
Imports System.IO
Public Class Form1
Public line, counter As String
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
counter += 1
If TextBox1.Text = "" Then
MsgBox("Enter a DNS address to ping")
Else
'line = ":start" + vbNewLine
'line += "ping " + TextBox1.Text
'MsgBox(line)
Dim StreamToWrite As StreamWriter
StreamToWrite = New StreamWriter("C:\Desktop\Ping" + counter + ".bat")
StreamToWrite.Write(":start" + vbNewLine + _
"Ping -t " + TextBox1.Text)
StreamToWrite.Close()
Dim p As New System.Diagnostics.Process()
p.StartInfo.FileName = "C:\Desktop\Ping" + counter + ".bat"
p.Start()
End If
End Sub
End Class
Esto funciona así
No es mi respuesta, y no digo que esto sea o no una buena respuesta, pero si rechazas votar, explica por qué. Beneficia a otros saber por qué esto no se consideró una buena solución. –
Me inspiré en la respuesta de Steve, pero que me gustaría añadir un poco de brillo a la misma. Me gusta hacer el trabajo antes de escribir métodos de extensión, así que después tengo menos trabajo para llamar 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)
puedo realidad sólo tiene que escribir el comando y lo llaman de mis cadenas como esta ..
Directamente en el 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 tendrán que ser colocado en un módulo público y llevar el atributo <Extension>
sobre el submarino. También querrá agregar Imports System.Runtime.CompilerServices
a la parte superior de su archivo de código.
Hay mucha información sobre SO sobre métodos de extensión si necesita más ayuda.
Método de extensión
Public Module Extensions
''' <summary>
''' Extension method to run string as CMD command.
''' </summary>
''' <param name="command">[String] Command to run.</param>
''' <param name="ShowWindow">[Boolean](Default:False) Option to show CMD window.</param>
''' <param name="WaitForProcessComplete">[Boolean](Default:False) Option to wait for CMD process to complete before exiting sub.</param>
''' <param name="permanent">[Boolean](Default:False) Option to keep window visible after command has finished. Ignored if ShowWindow is False.</param>
<Extension>
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
- 1. ¿Cómo ejecutar comandos de script desde variables?
- 2. Ejecutar comandos Bash desde PHP
- 3. Enviando comandos al prompt cmd en C#
- 4. Ejecutar secuencias de comandos R desde VBA
- 5. Ejecutar Java desde la línea de comandos
- 6. Ejecutar comandos de Linux desde Qt4
- 7. Ejecutar comandos bash desde un Rakefile
- 8. No se puede ejecutar comandos desde Process.Start
- 9. Cómo ejecutar ffmpeg desde la línea de comandos en android
- 10. ¿Cómo ejecutar Google Codepro Analytix desde la línea de comandos?
- 11. ¿Cómo ejecutar comandos de shell desde una aplicación Mac/MacRuby?
- 12. ¿Ejecutar archivo por lotes en vb.net?
- 13. Resize command prompt a través de los comandos
- 14. Ejecutar el paquete osgi desde la línea de comandos
- 15. Crear una nueva ventana cmd.exe desde otro prompt cmd.exe
- 16. Ejecutar JUnit Test suite desde la línea de comandos
- 17. ¿Cómo personalizar el prompt PostgreSQL/psql?
- 18. Ejecutar secuencia de comandos bash bash desde Emacs
- 19. No se puede ejecutar UIAutomationTest desde la línea de comandos
- 20. cómo ejecutar dos comandos en sudo?
- 21. Ejecutar el comando vim desde la línea de comandos
- 22. Ejecutar comandos en ventanas de pantalla GNU desde .screenrc
- 23. Ejecutar secuencia de comandos bash desde Windows PowerShell
- 24. Ejecutar un comando de línea de comandos desde CruiseControl.NET
- 25. Ejecutar proyecto de Eclipse desde la línea de comandos
- 26. Ejecutar una biblioteca de Ruby desde la línea de comandos
- 27. Ejecutar el modo de depuración desde la línea de comandos
- 28. Quiero ejecutar comandos de shell desde pom.xml de Maven
- 29. Mónadas en el prompt?
- 30. VS2008 Command Prompt + Cygwin
tal vez empezar de forma sencilla con Process.Start ("C: \ Windows \ System32 \ MSPaint.exe") - a continuación, una vez que usted consigue que va empezar a tratar los comandos de Git Imagino que es mucho más difícil con todos los argumentos adicionales de la línea de comando. El otro consejo útil para ayudarlo a resolver cuál es el error es leer StandardError, la respuesta aquí es un ejemplo perfecto: http://stackoverflow.com/questions/2709198/process-start-get-errors-from-command- ventana de solicitud –