我有一个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
答案 0 :(得分:1)
尝试使用ProcessStartInfo.WorkingDirectory属性。
答案 1 :(得分:0)
我总是通过创建一个单独的ProcessStartInfo对象并将其传递到Process.Start()
方法来完成此操作。
ProcessStartInfo psi = new ProcessStartInfo("filename.txt", "-arg1 -arg2");
Process.Start(psi);
答案 2 :(得分:0)
你不应该引用参数,也不应该引用exe路径
cmdProcess.StartInfo.FileName = TextBox2.Text
cmdProcess.StartInfo.Arguments = TextBox1.Text
答案 3 :(得分:0)
我遇到了一个解决方案,显然我必须在与我执行的exe相同的目录中运行我的程序。 -f Config.cfg参数通常基于Bec.exe所在的位置,当我通过我的程序调用它时,它基于我的程序位置,所以现在我的程序在同一个目录中它现在正在运作。