【问题标题】:Can't run commands VB.NET无法运行命令 VB.NET
【发布时间】:2015-12-29 14:50:54
【问题描述】:

我有这个代码:

 Try
        cmd.Kill()
    Catch ex As Exception
    End Try
    TextBox2.Clear()
    If TextBox1.Text.Contains(" ") Then
        psi = New ProcessStartInfo(TextBox1.Text.Split(" ")(0), TextBox1.Text.Split(" ")(1))
    Else
        psi = New ProcessStartInfo("C:/Bukkit Runner/run.bat")
    End If
    Dim systemencoding As System.Text.Encoding
    System.Text.Encoding.GetEncoding(Globalization.CultureInfo.CurrentUICulture.TextInfo.OEMCodePage)
    With psi
        .UseShellExecute = False
        .RedirectStandardError = True
        .RedirectStandardOutput = True
        .RedirectStandardInput = True
        .CreateNoWindow = True
        .StandardOutputEncoding = systemencoding
        .StandardErrorEncoding = systemencoding
    End With
    cmd = New Process With {.StartInfo = psi, .EnableRaisingEvents = True}
    AddHandler cmd.ErrorDataReceived, AddressOf Async_Data_Received
    AddHandler cmd.OutputDataReceived, AddressOf Async_Data_Received
    cmd.Start()
    cmd.BeginOutputReadLine()
    cmd.BeginErrorReadLine()

和文本框命令

        If TextBox1.Text.Contains(" ") Then
        psi = New ProcessStartInfo(TextBox1.Text.Split(" ")(0), TextBox1.Text.Split(" ")(1))
    Else
        psi = New ProcessStartInfo(TextBox1.Text$)
    End If
    Dim systemencoding As System.Text.Encoding
    System.Text.Encoding.GetEncoding(Globalization.CultureInfo.CurrentUICulture.TextInfo.OEMCodePage)
    With psi
        .UseShellExecute = False
        .RedirectStandardError = True
        .RedirectStandardOutput = True
        .RedirectStandardInput = True
        .CreateNoWindow = True
        .StandardOutputEncoding = systemencoding
        .StandardErrorEncoding = systemencoding
    End With
    cmd = New Process With {.StartInfo = psi, .EnableRaisingEvents = True}
    AddHandler cmd.ErrorDataReceived, AddressOf Async_Data_Received
    AddHandler cmd.OutputDataReceived, AddressOf Async_Data_Received
    cmd.Start()
    cmd.BeginOutputReadLine()
    cmd.BeginErrorReadLine()

但如果我确实在控制台中停止,我会收到此错误: http://prntscr.com/9jvf90

第一个开始命令工作正常。 http://prntscr.com/9jvfqe

如何在 bat 文件中运行命令?

【问题讨论】:

    标签: vb.net windows


    【解决方案1】:

    作为 Minecrafter,我可以清楚地看到您正在尝试运行 Bukkit 服务器。

    也许这会有所帮助?

    Private Sub MyCode(sender As Object, e As EventArgs) Handles <stuff>
    Try
     Try
            cmd.Kill()
        Catch ex As Exception
        End Try
        TextBox2.Clear()
    Textbox_TextChanged(sender,e)
    Catch
    End
    End Try
    End Sub
    Private Sub Textbox_TextChanged(sender As Object, e As EventArgs) Handles Textbox1.textChanged, Textbox2.TextChanged
    Try
            If TextBox1.Text.Contains(" ") Then
            psi = New ProcessStartInfo(TextBox1.Text.Split(" ")(0), TextBox1.Text.Split(" ")(1))
        Else
            psi = New ProcessStartInfo(TextBox1.Text$)
        End If
        Dim systemencoding As System.Text.Encoding
        System.Text.Encoding.GetEncoding(Globalization.CultureInfo.CurrentUICulture.TextInfo.OEMCodePage)
        With psi
            .UseShellExecute = False
            .RedirectStandardError = True
            .RedirectStandardOutput = True
            .RedirectStandardInput = True
            .CreateNoWindow = True
            .StandardOutputEncoding = systemencoding
            .StandardErrorEncoding = systemencoding
        End With
        cmd = New Process With {.StartInfo = psi, .EnableRaisingEvents = True}
        AddHandler cmd.ErrorDataReceived, AddressOf Async_Data_Received
        AddHandler cmd.OutputDataReceived, AddressOf Async_Data_Received
        cmd.Start()
        cmd.BeginOutputReadLine()
        cmd.BeginErrorReadLine()
    Catch
    End
    End Try
    End Sub
    

    【讨论】:

    • 感谢您的回答。但是使用此代码运行时会崩溃。 :( 对不起我的英语不好。
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 2020-12-20
    • 2018-07-18
    • 2022-01-16
    • 2014-03-22
    • 2017-01-11
    • 2017-01-25
    • 1970-01-01
    相关资源
    最近更新 更多