程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#靜態履行批處置敕令的辦法

C#靜態履行批處置敕令的辦法

編輯:C#入門知識

C#靜態履行批處置敕令的辦法。本站提示廣大學習愛好者:(C#靜態履行批處置敕令的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#靜態履行批處置敕令的辦法正文


本文實例講述了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();
    }
}

願望本文所述對年夜家的C#法式設計有所贊助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved