在c#中运行/生成命令与文件

本文关键字:命令 文件 运行 | 更新日期: 2023-09-27 18:10:47

我可以在c#中做以下事情:

var pSpawn = new Process
     {
         StartInfo = { WorkingDirectory = @"C:'temp", FileName = fileToRun, CreateNoWindow = true }
     };
     pSpawn.Start();

,这很好....然而,我想知道是否有一种方法来运行命令(即:"dir/b"),而不必封装在批处理文件?

在c#中运行/生成命令与文件

只需启动cmd.exe并传递所需的参数

 var pSpawn = new Process
 {
     StartInfo = 
     { 
         WorkingDirectory = @"C:'temp", 
         FileName = "cmd.exe", 
         Arguments ="/K dir /b" }
 };
 pSpawn.Start();

我添加了参数/K以保持命令窗口打开,因此可以看到命令dir的输出。
当然,我认为您确实对捕获命令的输出感兴趣。
在这种情况下,你可以这样做:

StringBuilder sb = new StringBuilder();
var pSpawn = new Process
{
     StartInfo = 
     { 
        WorkingDirectory = @"C:'temp", 
        FileName = "cmd.exe", 
        Arguments ="/c dir /b", 
        CreateNoWindow = true,
        RedirectStandardOutput = true,
        RedirectStandardInput = true,
        UseShellExecute = false
     }
};
pSpawn.OutputDataReceived += (sender, args) => sb.AppendLine(args.Data);
pSpawn.Start();
pSpawn.BeginOutputReadLine();
pSpawn.WaitForExit();
Console.WriteLine(sb.ToString());

可以这样调用:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/c dir /b";
Process.Start(info);
相关文章: