C#调用cmd防止死锁以及详解Process例子:通过C# 调用cmd clone和拉取git的代码和生成日志
2018-07-12 15:28
519 查看
C#调用cmd已经详细写了调用的方法,接下来具体介绍一个例子:
通过C# 调用cmd clone和拉取git的代码和生成日志
第一步:配置git ,要有权限拉取代码
第二部:调用cmd
public void RunCloneCmd(string path, string command) { Process pro = new Process(); //Pro = pro; pro.StartInfo.FileName = "cmd.exe"; pro.StartInfo.CreateNoWindow = true; // 不创建新窗口 pro.StartInfo.UseShellExecute = false; //不启用shell启动进程 pro.StartInfo.RedirectStandardInput = true; // 重定向输入 pro.StartInfo.RedirectStandardOutput = true; // 重定向标准输出 pro.StartInfo.RedirectStandardError = false; //重定向标准错误 // 重定向错误输出 pro.StartInfo.WorkingDirectory = path; //定义执行的路径 pro.Start(); pro.StandardInput.WriteLine(command); //向cmd中输入命令 pro.StandardInput.AutoFlush = true; pro.StandardInput.WriteLine("exit"); //退出 string outRead = pro.StandardOutput.ReadToEnd(); //获得所有标准输出流 pro.WaitForExit(); //等待命令执行完成后退出 pro.Close(); //关闭窗口 }
定义执行的路径:
在cmd中==在E:\webNet路径下执行
如:
E:\webNet>git --version
如何获得标准输出流和错误流有两种方式
按照行读取
StreamReader reader = p.StandardOutput;//获取cmd输出流 string line = reader.ReadLine();//每次读取一行 while (!reader.EndOfStream) { line = reader.ReadLine(); }
一起读:
string outRead = pro.StandardOutput.ReadToEnd();
输出的内容如下:
错误流也一样:
string outRead = pro.StandardError.ReadToEnd();
如果没有安装git在cmd拉取代码正常,通过C#调用CMD却没有输出,需要重启电脑让Git生效:否则报如下错误:(截取一部分错误)
获取git日志:
执行 string commont = @”git log –name-status –date=format:”“%Y-%m-%d %H:%M:%S”” –pretty=format:”“#%H# %cn# %ce# %cd# %s#”“> log.txt”;
命令即可获得git日志log.txt文件
相关文章推荐
- c#通过进程调用cmd判断登录用户权限代码分享
- Mac 通过命令行编译运行C代码 以及生成和调用静态库 以及Makefile实现过程
- C#管理员权限调用cmd以及以管理员身份生成程序
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】
- c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制
- 通过windbg 得到我们要 hook 的api 地址的方法以及 hook NtOpenProcess 的例子。。。
- C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
- c#关闭系统进程以及如何调用cmd并执行命令
- 发布NBearLite v1.0.0 beta - 全面支持SqlServer,Oracle,MySql,PostgreSql数据库存储过程调用代码生成(C#/VB.NET)
- 【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
- 用VS2008生成C++代码的dll及在C#中的调用及常见的类型转换
- C#生成DLL以及调用DLL
- 使用swig工具为go语言生成调用C、C++代码例子
- C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
- 在vb和asp中调用c#生成的.net的dll,详细步骤、截图和代码
- 用VS2008生成C++代码的dll及在C#中的调用及常见的类型转换
- C#编程生成的Word2007版本的文件如何兼容Word2003?(通过代码将docx文件转存为doc文件)
- C#调用外部程序(用cmd为例子)
- C# 后台调用前台的JS方法 以及常用的代码片断
- Asp.net C#下实现运行cmd调用命令的代码实例