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#法式設計有所贊助。