Получите вывод команды оболочки в VB.net
У меня есть программа VB.net, в которой я вызываю функцию Shell. Я хотел бы получить вывод текста, который создается из этого кода в файле. Однако это не возвращаемое значение исполняемого кода, поэтому я действительно не знаю, как это сделать.
Эта программа является сервисом, но имеет доступ к диску без проблем, поскольку я уже регистрирую другую информацию. Весь сервис имеет несколько потоков, поэтому я должен также убедиться, что когда файл написан, он еще не был достигнут.
Ответы
Ответ 1
Вы не сможете захватить вывод из Shell.
Вам нужно будет изменить это на процесс, и вам нужно будет захватить потоки Стандартный вывод (и, возможно, Ошибка) из процесса.
Вот пример:
Dim oProcess As New Process()
Dim oStartInfo As New ProcessStartInfo("ApplicationName.exe", "arguments")
oStartInfo.UseShellExecute = False
oStartInfo.RedirectStandardOutput = True
oProcess.StartInfo = oStartInfo
oProcess.Start()
Dim sOutput As String
Using oStreamReader As System.IO.StreamReader = oProcess.StandardOutput
sOutput = oStreamReader.ReadToEnd()
End Using
Console.WriteLine(sOutput)
Ответ 2
Просто подключите вывод к текстовому файлу?
MyCommand > "c:\file.txt"
Затем прочитайте файл.
Ответ 3
Dim proc As New Process
proc.StartInfo.FileName = "C:\ipconfig.bat"
proc.StartInfo.UseShellExecute = False
proc.StartInfo.RedirectStandardOutput = True
proc.Start()
proc.WaitForExit()
Dim output() As String = proc.StandardOutput.ReadToEnd.Split(CChar
(vbLf)) Для каждого ln As String В выводе RichTextBox1.AppendText(ln и vbNewLine) lstScan.Items.Add(ln и vbNewLine) Далее
=============================================== ========================
создайте пакетный файл в двух строках, как показано ниже:
эхо-сигнал
IPCONFIG
'убедитесь, что вы сохранили этот пакетный файл как ipconfig.bat или любое другое имя, которое вы решили выбрать, но убедитесь, что вы положили точку bat в конце.