Vb.net 进程。开始时不要传递参数

Vb.net 进程。开始时不要传递参数,vb.net,command-line-arguments,process.start,Vb.net,Command Line Arguments,Process.start,我有一个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 c

我有一个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

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

ProcessStartInfo psi = new ProcessStartInfo("filename.txt", "-arg1 -arg2");
Process.Start(psi);

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

cmdProcess.StartInfo.FileName = TextBox2.Text
cmdProcess.StartInfo.Arguments = TextBox1.Text

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

尝试使用ProcessStartInfo.WorkingDirectory属性。

是否检查了
参数的实际设置?TextBox2的内容是按钮2上的“--f=Config.cfg”,单击它只运行不带参数的exe。这是我尝试的第一件事,我仍然无法让它正常工作。不幸的是,我仍然需要将cmd输出重定向到我的RichTextBox2。您仍然可以将ProcessStartInfo对象传递给您的特定进程实例。