Подтвердить что ты не робот

Получите вывод команды оболочки в VB.net

У меня есть программа VB.net, в которой я вызываю функцию Shell. Я хотел бы получить вывод текста, который создается из этого кода в файле. Однако это не возвращаемое значение исполняемого кода, поэтому я действительно не знаю, как это сделать.

Эта программа является сервисом, но имеет доступ к диску без проблем, поскольку я уже регистрирую другую информацию. Весь сервис имеет несколько потоков, поэтому я должен также убедиться, что когда файл написан, он еще не был достигнут.

4b9b3361

Ответ 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 в конце.