通过C#实现cmd查找目标进程内容,直到当前进程运行结束运行下一条指令
时间: 2024-09-18 14:09:18 浏览: 39
在C#中,你可以使用`System.Diagnostics.Process`类来获取和操作系统命令行进程。如果你想查找特定进程的内容,并监控它直到结束,然后继续执行下一条命令,可以按照以下步骤进行:
1. **创建进程实例**:
使用`Process.Start`方法启动cmd并传递需要搜索的进程名作为参数。例如,如果你要搜索名为"example.exe"的进程,可以这样做:
```csharp
ProcessStartInfo psi = new ProcessStartInfo("cmd", $"/c tasklist /FI \"IMAGENAME eq example.exe\"");
psi.RedirectStandardOutput = true; // 这将允许你读取进程输出
psi.UseShellExecute = false;
Process process = new Process();
process.StartInfo = psi;
process.Start();
```
2. **获取和处理输出**:
`RedirectStandardOutput`属性启用后,你可以使用`process.StandardOutput.ReadToEnd()`方法获取进程的输出结果。这会阻塞,直到进程结束。
```csharp
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine($"Target process output: {output}");
```
3. **等待进程结束**:
使用`WaitForExit`方法等待进程结束,同时监听退出代码。
```csharp
process.WaitForExit();
int exitCode = process.ExitCode;
if (exitCode == 0) {
Console.WriteLine("The process exited successfully.");
} else {
Console.WriteLine($"The process exited with error code: {exitCode}");
}
```
4. **继续执行下一条命令**:
如果你需要在当前进程结束后执行更多的命令,可以在`psi.Arguments`里添加新的命令,然后再次启动一个新的进程。
```csharp
// 示例:启动新的命令 "notepad"
psi = new ProcessStartInfo("cmd", $"/c start notepad");
// 然后再次启动新进程
process = new Process();
process.StartInfo = psi;
process.Start();
```
阅读全文