【问题标题】:How to execute the set path=c:\Project Work\jdk1.8.0_66-x64\jre\bin;%PATH% command from C#如何从 C# 执行 set path=c:\Project Work\jdk1.8.0_66-x64\jre\bin;%PATH% 命令
【发布时间】:2024-01-18 21:08:01
【问题描述】:

我正在尝试运行一个可执行的 JAR 文件,它必须使用 jre 1.8 版运行。 当我从 CMD 手动运行此命令时,我得到的 jre 版本为 1.8。 设置路径=c:\Project Work\jdk1.8.0_66-x64\jre\bin;%PATH%

如何从 C# 运行此命令。我尝试了以下代码,但无法从 c# 执行命令。

try
            {
                string command = "set path=c:\\Project Work\\jdk1.8.0_66-x64\\jre\bin;%PATH%";
                System.Diagnostics.ProcessStartInfo procStartInfo =
                    new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);



                procStartInfo.RedirectStandardOutput = true;
                procStartInfo.UseShellExecute = false;

                procStartInfo.CreateNoWindow = true;

                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo = procStartInfo;
                proc.Start();

                string result = proc.StandardOutput.ReadToEnd();

                Console.WriteLine(result);
                Console.WriteLine(procStartInfo.WorkingDirectory);
                Console.ReadLine();
            }
            catch (Exception objException)
            {
                // Log the exception
            }

请提供您的输入以执行命令。

【问题讨论】:

  • 改用Environment.SetEnvironmentVariable
  • @Evk,您还可以将变量添加到ProcessStartInfoEnvironment 属性中。这样就不会污染调用进程的环境。不过,在这种特殊情况下,这并不重要。
  • @Joey 谢谢你的信息,不知道

标签: c# cmd


【解决方案1】:

我可以按照以下步骤执行命令 1.我用命令写了一个批处理文件 设置路径=c:\Project Work\jdk1.8.0_66-x64\jre\bin;%PATH% 2.我已经命名了批处理文件,并按以下方式从C#程序中执行了批处理文件。

string abc = "abc";
        string def = "123";
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo.FileName = "C:\\Users\\90008121\\Desktop\\ClassPathbatch.bat";
        proc.StartInfo.Arguments = String.Format("{0} {1}", abc, def);
        proc.StartInfo.RedirectStandardError = false;
        proc.StartInfo.RedirectStandardOutput = false;
        proc.StartInfo.UseShellExecute = false;
        proc.Start();
        proc.WaitForExit();
        Console.ReadLine(); 

3。终于满足要求了。

【讨论】: