0

Process クラスを使用してコマンド ウィンドウから実行されるレガシー アプリを実行する必要があります。

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C \"C:\\MySys\\My2Com.exe –r " + Parameters.FullPath;
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;

try
{
    // Start the process with the info we specified.
    // Call WaitForExit and then the using statement will close.
    using (Process exeProcess = Process.Start(startInfo))
    {
        exeProcess.WaitForExit();
    }
}
catch (Exception e)
{
    string sMsg = "Error copying the files to " + Parameters.FullPath + ".";
    HandleErrorMsg(e, sMsg);
    return;
}

プロセス My2Com.exe はバックグラウンドで実行する必要がありますが、さまざまなフラグを指定して cmd ラインから実行したときに使用されるファイルが見つからないというメッセージが常に表示されます。C:\MySys\My2Com.exe –r FullyQualPath というコマンド ウィンドウに示されているコマンドを実行すると、期待どおりに動作します。Process クラスをセットアップする方法をいくつか試しましたが、成功しませんでした。

任意の提案をいただければ幸いです。

ありがとうございました。

4

4 に答える 4

0

次のことを行うと、これは機能しますか

startInfo.Arguments = @"/C "C:\MySys\My2Com.exe /r" " + Parameters.FullPath +"\"";

ファイルパスにスペースがある場合、たとえばファイルパスが次のようになっている場合は、"""をラップする必要があることに注意してください@"""C:\ Wolf Lair \ WorkDeskTemp \"

@と"""に注意してください

終了引用符を文字列+"\"";の後にParameters.FullPath;の後に追加する必要があります。

于 2012-08-15T18:40:04.953 に答える
0
startInfo.Arguments = @"/C ""C:\MySys\My2Com.exe –r """ + Parameters.FullPath + "\"";

また、C# の cmd プロンプトにコマンドを送信するも参照してください。標準出力と標準エラーをインターセプトして、何が得られているかを確認できるように、私の回答のコードの一部を使用することをお勧めします。

于 2012-08-15T18:51:38.960 に答える
0

あなたはなぜそれが機能しないのか知っています

  • 見積もりを完了していません

これを試して:-

startInfo.Arguments = "/C \"C:\\MySys\\My2Com.exe\" –r \"" + Parameters.FullPath+"\"";
于 2012-08-15T18:41:27.823 に答える
0

これを試してみてください -

startInfo.Arguments = "/C \"C:\\MySys\\My2Com.exe –r\" " + Parameters.FullPath;
于 2012-08-15T18:36:12.600 に答える