0

C# を介して引数を渡そうとする exe ファイルがあります。コードは次のとおりです

class Class1
{
    static void Main()
    {
        string[] arg;
        arg = new string[3];
        Process p = new Process();

        p.StartInfo.FileName = @"D:\xxx.exe";
        for (int i = 0; i < 3; i++)
        {
            arg[i]  = Console.ReadLine();
        }

        p.StartInfo.Arguments = arg[0] + " " + arg[1] + " " + arg[2];
        p.Start();
    }
}

コンソールを開き、そこに引数を書き込みます。3 つの引数を入力し終わるとすぐに、3 つの引数から文字列を作成し、文字列Process.Start()内の引数を使用して呼び出しp.StartInfo.Argumentsます。exe ファイルは読み込まれますが、出力は生成されません。奇妙なことに、コンピューターからexeファイルを開いてから書き込むと、

Arg1.txt Arg2.txt Arg3.txt

Enterキーを押して、exeファイルが出力を生成します。ただし、現在、同じスタイルの同じ引数が C# コードを介して渡されており、出力が生成されていません。私が間違っていることを理解していません。これについて StackOverflow には複数の質問がありますが、私は知っていますが、それらはすべて私がここで行ったことと同じ手順を示唆しています。私はまた、次のように引数を与えようとしました

p.StartInfo.Arguments = "\"arg[0]\"\"arg[1]\"\"arg[2]\"";

しかし、これも機能していません。

4

1 に答える 1

6

これを試して:

p.StartInfo.Arguments = "\"" + arg[0] + " " + arg[1] + " " + arg[2] + "\"";
p.Start();

ギャップ間に複数のパラメータを使用する場合は、"" を使用することをお勧めします。

編集:「\」を入力する場合は、「\」を含める必要はありません。エスケープ文字です。下の図を参照してください。

ここに画像の説明を入力

于 2013-10-17T06:22:49.920 に答える