在C#中,有时需要执行命令行指令来完成特定的任务。这可能包括运行脚本、管理服务、获取系统信息等。C# 提供了 System.Diagnostics
命名空间中的 Process
类来启动和管理系统进程,包括命令行窗口(cmd.exe)。
C#public class CmdExample
{
public static void ExecuteCommand(string command)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", $"/c {command}")
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (Process process = Process.Start(processStartInfo))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.WriteLine(result);
}
}
}
}
使用此方法可以执行任何简单的命令行指令。例如,获取当前目录下的文件列表:
C#static void Main()
{
CmdExample.ExecuteCommand("dir");
}
C#public class BatchScriptRunner
{
public static void RunBatchScript(string scriptPath)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo(scriptPath)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (Process process = Process.Start(processStartInfo))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.WriteLine(result);
}
}
}
}
调用批处理脚本 a.bat
:
C#static void Main()
{
BatchScriptRunner.RunBatchScript(@"d:\a.bat");
}
C#public class ComplexCommandExecutor
{
public static void ExecuteComplexCommand(string command)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", $"/c {command}")
{
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false,
CreateNoWindow = true
};
StringBuilder output = new StringBuilder();
StringBuilder error = new StringBuilder();
using (Process process = new Process())
{
process.StartInfo = processStartInfo;
process.OutputDataReceived += (sender, args) => output.AppendLine(args.Data);
process.ErrorDataReceived += (sender, args) => error.AppendLine(args.Data);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
Console.WriteLine("Output:");
Console.WriteLine(output.ToString());
Console.WriteLine("Error:");
Console.WriteLine(error.ToString());
}
}
}
C#static void Main()
{
ComplexCommandExecutor.ExecuteComplexCommand("ipconfig /all");
}
在C#中调用执行命令行窗口可以非常灵活和强大,但也需要注意安全性和错误处理。始终验证外部输入,避免注入攻击,并确保处理任何可能的异常和错误输出。正确使用时,它可以是自动化和系统集成的强大工具。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!