国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C# 動態執行批處理命令

2019-11-17 02:45:51
字體:
來源:轉載
供稿:網友

C# 動態執行批處理命令

C# 動態執行一系列控制臺命令,并允許實時顯示出來執行結果時,可以使用下面的函數。可以達到的效果為:

  • 持續的輸入:控制臺可以持續使用輸入流寫入后續的命令
  • 大數據量的輸出:不會因為大數據量的輸出導致程序阻塞
  • 友好的 API:直接輸入需要執行的命令字符串即可

函數原型為:

/// <summary>/// 打開控制臺執行拼接完成的批處理命令字符串/// </summary>/// <param name="inputAction">需要執行的命令委托方法:每次調用 <paramref name="inputAction"/> 中的參數都會執行一次</param>PRivate static void ExecBatCommand(Action<Action<string>> inputAction)

使用示例如下:

ExecBatCommand(p =>{    p(@"net use //10.32.11.21/ERPProject yintai@123 /user:yt/ERPDeployer");    // 這里連續寫入的命令將依次在控制臺窗口中得到體現    p("exit 0");});

注:執行完需要的命令后,最后需要調用 exit 命令退出控制臺。這樣做的目的是可以持續輸入命令,知道用戶執行退出命令 exit 0,而且退出命令必須是最后一條命令,否則程序會發生異常。


下面是批處理執行函數源碼

/// <summary>/// 打開控制臺執行拼接完成的批處理命令字符串/// </summary>/// <param name="inputAction">需要執行的命令委托方法:每次調用 <paramref name="inputAction"/> 中的參數都會執行一次</param>private static void ExecBatCommand(Action<Action<string>> inputAction){    Process pro = null;    StreamWriter sIn = null;    StreamReader sOut = null;     try    {        pro = new Process();        pro.StartInfo.FileName = "cmd.exe";        pro.StartInfo.UseShellExecute = false;        pro.StartInfo.CreateNoWindow = true;        pro.StartInfo.RedirectStandardInput = true;        pro.StartInfo.RedirectStandardOutput = true;        pro.StartInfo.RedirectStandardError = true;         pro.OutputDataReceived += (sender, e) => Console.WriteLine(e.Data);        pro.ErrorDataReceived += (sender, e) => Console.WriteLine(e.Data);         pro.Start();        sIn = pro.StandardInput;        sIn.AutoFlush = true;         pro.BeginOutputReadLine();        inputAction(value => sIn.WriteLine(value));         pro.WaitForExit();    }    finally    {        if (pro != null && !pro.HasExited)            pro.Kill();         if (sIn != null)            sIn.Close();        if (sOut != null)            sOut.Close();        if (pro != null)            pro.Close();    }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阜城县| 慈溪市| 峨眉山市| 凤山县| 库尔勒市| 聊城市| 和林格尔县| 内乡县| 茶陵县| 东兰县| 柘荣县| 商城县| 东乌珠穆沁旗| 鹰潭市| 赣州市| 上栗县| 金秀| 驻马店市| 玉山县| 子洲县| 木兰县| 白河县| 鄂尔多斯市| 延边| 白玉县| 柞水县| 周至县| SHOW| 郁南县| 蒲城县| 和政县| 六枝特区| 如皋市| 滦平县| 玉屏| 从化市| 中阳县| 盱眙县| 岢岚县| 电白县| 横山县|