ProcessStartInfo psi = new ProcessStartInfo("cmd", $"/c {command}");如何一次执行多条命令字符串
时间: 2024-11-03 12:15:24 浏览: 15
C#-WinForm执行CMD命令
4星 · 用户满意度95%
在C#中,当你使用`ProcessStartInfo`来启动一个新的进程并传递命令行参数时,如果需要一次性执行多条命令,可以在命令字符串(`command`变量)中使用分号(`;`)来分隔每个命令。比如:
```csharp
string commands = "command1; command2; command3"; // 假设command1, command2, command3是你需要执行的命令
string escapedCommands = commands.Replace(";", "%0D%0A"); // 使用`\r\n`替换分号,因为它们会被shell解释
ProcessStartInfo psi = new ProcessStartInfo("cmd", $"/c {escapedCommands}");
psi.RedirectStandardOutput = true; // 如果你需要捕获输出,设置此属性为true
psi.UseShellExecute = false; // 设置为false以便直接创建进程,而不是通过壳程启动
using (var process = Process.Start(psi))
{
process.WaitForExit(); // 等待进程结束
}
```
在这个例子中,我们用`Replace`函数把分号替换成`\r\n`(回车换行),这是命令行中分隔命令的标准方式。`UseShellExecute`设置为`false`是为了让`Process.Start`直接执行指定的命令,而不是作为外部命令的参数。
请注意,如果命令中含有特殊字符(如空格、双引号等),可能需要进一步的转义。
阅读全文