如何只执行cmd.exe进程一次,并在foreach中传递commandText

本文关键字:并在 一次 foreach commandText 执行 cmd exe 进程 | 更新日期: 2023-09-27 18:16:30

我想在foreach外部只执行一次cmd.exe的进程,而在内部foreach想向该进程发送参数。

我目前正在做这个:

var msbuildPath = (string) regKey.GetValue("MSBuildToolsPath");
foreach (var item in listBox1.Items)
{
    var FilePath = item.ToString();         
    var startInfo = new ProcessStartInfo()
    {
        WindowStyle = ProcessWindowStyle.Hidden,
        Arguments = String.Format("'"{0}'" /nologo ", FilePath),
        FileName = Path.Combine(msbuildPath, "msbuild.exe")
    };
    var proc = Process.Start(startInfo);
    proc.WaitForExit();
}   

如何只执行cmd.exe进程一次,并在foreach中传递commandText

如果我说得对,它应该是这样的:

var msbuildPath = (string)regKey.GetValue("MSBuildToolsPath");
StringBuilder sb = new StringBuilder();
foreach (var item in listBox1.Items)
{
   sb.AppendFormat("'"{0}'" ", item);
}
var startInfo = new ProcessStartInfo()
{
   WindowStyle = ProcessWindowStyle.Hidden,
   Arguments = sb.ToString() + " /nologo",
   FileName = Path.Combine(msbuildPath, "msbuild.exe")
};
var proc = Process.Start(startInfo);
proc.WaitForExit();