0

我需要运行一个使用 Process 类从 cmd 窗口运行的旧版应用程序。

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 行运行时使用的文件丢失。如果我按照 cmd 窗口中的指示运行命令 C:\MySys\My2Com.exe –r FullyQualPath,它会按预期工作。我尝试了几种不同的方法来设置 Process 类,但均未成功。

任何建议,将不胜感激。

谢谢你。

4

4 回答 4

0

试试这个——

startInfo.Arguments = "/C \"C:\\MySys\\My2Com.exe –r\" " + Parameters.FullPath;
于 2012-08-15T18:36:12.600 回答
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+"\"";
于 2012-08-15T18:41:27.823 回答
0
startInfo.Arguments = @"/C ""C:\MySys\My2Com.exe –r """ + Parameters.FullPath + "\"";

Also, see Sending commands to cmd prompt in C#. I'd recommended using some of the code from my answer there so that you can intercept the standard output and standard error to see what you're getting.

于 2012-08-15T18:51:38.960 回答