0

我有一个运行以下完美的bat文件:

Bec.exe --f=Config.cfg

现在在 vb.net 中,我有一个按钮,可以使用相同的参数启动相同的 exe,并输出到 rtb。但是由于某种原因它没有传递论点,我不知道为什么。任何人都可以帮忙吗?

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim cmdProcess As Process
    cmdProcess = New Process()
    cmdProcess.StartInfo.FileName = """" & TextBox2.Text & """" 'normally this is C:\ServerTools\Bec.exe
    cmdProcess.StartInfo.Arguments = """" & TextBox1.Text & """" 'normally is --f=Config.cfg
    cmdProcess.StartInfo.RedirectStandardOutput = True
    cmdProcess.StartInfo.UseShellExecute = False

    If cmdProcess.Start() Then
        RichTextBox2.Text = cmdProcess.StandardOutput.ReadToEnd
    Else
        ' Failed to execute
    End If
End Sub

此外,我将为我正在启动的 .exe 提供已接受选项的参考

Options:
-h, --help            show this help message and exit
-f FILENAME, --file=FILENAME
4

4 回答 4

1

尝试使用 ProcessStartInfo.WorkingDirectory 属性。

于 2012-08-02T14:32:35.613 回答
0

我遇到了一个解决方案,显然我必须在与我正在执行的 exe 相同的目录中运行我的程序。-f Config.cfg 参数通常基于 Bec.exe 所在的位置,当我通过我的程序调用它时,它基于我的程序位置,所以现在我的程序在同一个目录中它现在正在工作。

于 2012-08-01T21:56:47.310 回答
0

我总是通过创建一个单独的ProcessStartInfo对象并将其传递给Process.Start()方法来做到这一点。

ProcessStartInfo psi = new ProcessStartInfo("filename.txt", "-arg1 -arg2");
Process.Start(psi);
于 2012-08-01T21:51:10.553 回答
0

您不应该引用参数,也不应该引用 exe 路径

cmdProcess.StartInfo.FileName = TextBox2.Text
cmdProcess.StartInfo.Arguments = TextBox1.Text
于 2012-08-01T21:51:17.107 回答