如何从vb.net向cmd发送命令

  • 本文关键字:cmd 命令 net vb vb.net cmd
  • 更新时间 :
  • 英文 :


我正在VB.NEt中开发应用程序(Visual studio 2017(我想向CMD发送一些命令,并在多行文本框中接收输出。我该怎么做?并且cmd的只有一个窗口应该是可见的

一点谷歌搜索。。。

Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
CMDThread.Start()
End Sub
Private Sub CMDAutomate()
Dim myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.CreateNoWindow = True '<---- if you want to not create a window
StartInfo.UseShellExecute = False 'required to redirect
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
SW.WriteLine(txtCommand.Text) 'the command you wish to run.....
SW.WriteLine("exit") 'exits command prompt window
txtResults.Text = SR.ReadToEnd 'returns results of the command window
SW.Close()
SR.Close()
End Sub

前面的答案几乎是正确的,但会带来跨线程错误。将cmd输出的返回文本放入变量中,然后调用按钮中Sub之后的字符串,点击如下。。。

在窗体上创建一个名为:btnPowerSSend的按钮,创建两个勾选了多行属性的文本框,称为:txt结果&txtScript

Public Class Form1
Dim retText As String

Private Sub BtnPowerShSend_Click(sender As Object, e As EventArgs) Handles btnPowerShSend.Click
Dim CMDThread As New Threading.Thread(AddressOf CMDAutomate)
CMDThread.Start()
txtResults.Text = retText 'returns results of the command window
End Sub

Private Sub CMDAutomate()
Dim myprocess As New Process
Dim StartInfo As New System.Diagnostics.ProcessStartInfo
StartInfo.FileName = "cmd" 'starts cmd window
StartInfo.RedirectStandardInput = True
StartInfo.RedirectStandardOutput = True
StartInfo.CreateNoWindow = True '<---- if you want to not create a window
StartInfo.UseShellExecute = False 'required to redirect
myprocess.StartInfo = StartInfo
myprocess.Start()
Dim SR As System.IO.StreamReader = myprocess.StandardOutput
Dim SW As System.IO.StreamWriter = myprocess.StandardInput
SW.WriteLine(txtScript.Text) 'the command you wish to run.....
SW.WriteLine("exit") 'exits command prompt window

retText = SR.ReadToEnd.ToString

SW.Close()
SR.Close()
End Sub
End Class

最新更新