在 C# 中使用 cmd 的两个参数启动 .exe,但参数未传递

问题描述 投票:0回答:1

我有以下代码:

       public static void startApplicationWithParameters()
        {
            string pathToProgram = "path to exe";
            string pathToLogFile= "path to log file";
            string pathToConfigFile = "path to xml file";
            string arguments = pathToLogFile + " " + pathToConfigFile;
            Console.WriteLine(arguments);

            Process startProcess = new Process();
            startProcess.StartInfo.FileName = pathToProgram;
            startProcess.StartInfo.Arguments = arguments;
            startProcess.Start();
           
        }

打印参数会显示按预期用空格分隔的路径。但是,当运行该方法时,我在控制台中收到此消息:

“需要两个命令行参数,一个表示日志文件的路径,第二个表示 XML 配置文件的路径 解析命令行选项时出现问题,停止”

我正在尝试将 .bat 文件重写为 c#,其中包含以下代码:

start /d %programPath% cmd.exe /k program.exe %programLogPath%\programLog.log %programConfigPath%\program.xml

.bat 文件按预期工作。是什么导致了我的 C# 代码错误?我阅读了多个有关使用 C# 启动 .exe 文件的线程,但找不到解决方案。

我希望程序在单独的控制台窗口中运行,并且我不想等待它停止。

c# process.start
1个回答
0
投票

我的猜测是路径中有空格,并且您的代码接收到的参数超过两个,而不是根本不接收参数。 尝试将路径放在引号中: string arguments = $"\"{pathToLogFile}\" \"{pathToConfigFile}\"";

或者更好的是,使用 

ArgumentList

 而不是 
Arguments,这样你就不需要任何引用,甚至不需要输入空格。
    

© www.soinside.com 2019 - 2024. All rights reserved.