C#操作cmd
2024-10-21 03:41:16
C#经常操作CMD,使用的话就用下面的2和3进行整理一下使用吧。
1、简单的调用命令不需要回传数据,最简单
public static void ipcmd(object p)
{
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c " + p;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
startInfo.Verb = "RunAs";
process.Start();
}
2、有回传数据的
public static string CmdExcute(string cmdStr)
{
Process process = new Process();
string output = ""; IntPtr ptr = new IntPtr();
bool bOS_X64 = System.Environment.Is64BitOperatingSystem;
if (bOS_X64)
{
Win32.Wow64DisableWow64FsRedirection(ref ptr); // 关闭system32文件重定向
} try
{
process.StartInfo.FileName = @"cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true; if (process.Start())//开始进程
{
process.StandardInput.AutoFlush = true;
process.StandardInput.WriteLine(cmdStr);
process.StandardInput.WriteLine("exit");
output = process.StandardOutput.ReadToEnd();
}
}
catch (Exception e)
{
}
finally
{
if (process != null)
{
process.Close();
}
}
if (bOS_X64)
{
Win32.Wow64RevertWow64FsRedirection(ptr); //恢复文件重定向
}
return output;
}
}
3、截取输出流的
public static List<string> cmd(string p)
{
List<string> lines = new List<string>();
List<string> lineNet = new List<string>();
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c " + p;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
startInfo.Verb = "RunAs"; try
{
process.Start();
System.IO.StreamReader reader = process.StandardOutput;//截取输出流 while (!reader.EndOfStream)
{
//if (reader.ReadLine().ToString().Contains("已禁用") || reader.ReadLine().ToString().Contains("已启用") || reader.ReadLine().ToString().Contains("Enabled") || reader.ReadLine().ToString().Contains("Disabled"))
//{
lineNet.Add(reader.ReadLine());
//}
}
foreach (var item in lineNet)
{
if (item.Contains("已禁用") || item.Contains("已启用") || item.Contains("Disabled") || item.Contains("Enabled"))
{
lines.Add(item);
}
}
}
catch (Exception e)
{ }
finally
{
if (process != null)
{
process.Close();
}
}
return lines;
}
最新文章
- ssh 登录慢?
- 三天学会HTML5 之第一天
- 点餐APP 冲刺三总结
- Centos7最小化安装后(minimal)安装图形界面
- ubuntu lua安装
- <;1>;数据引用与匿名存储
- 【HDOJ】3436 Queue-jumpers
- vbs的一些入门基础。。。
- HDU--2021
- CC2650LaunchPad 运行contiki hello-world示例程序
- C#-----创建DataTable对象
- 微服务之springCloud-docker-feign-hystrix-ribbon(七)
- Android-Activity跳转时动画
- 180727-时序数据库InfluxDB之备份和恢复策略
- Delphi使程序的窗口出现在最前面并激活
- 开源用户界面和布局的套件XiaoCai.WinformUI(美化用户界面利器)
- iOS:MBProgressHUD的基本使用
- LeetCode OJ:Populating Next Right Pointers in Each Node(指出每一个节点的下一个右侧节点)
- C# 读xml注释或过滤xml注释
- Maven修改默认本地资源库文件夹