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

私はいつも、別の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 に答える
0

私は解決策に出くわしました、どうやら私は私が実行していたexeと同じディレクトリで私のプログラムを実行しなければならなかったようです。-f Config.cfg引数は通常、Bec.exeがある場所に基づいています。プログラムを介して呼び出したときは、プログラムの場所に基づいていたため、同じディレクトリにプログラムがあります。現在動作しています。

于 2012-08-01T21:56:47.310 に答える