2021-05-12 14:32:11
C# 呼叫命令列執行Cmd命令的操作
2021-04-09 13:03:03
1、不知道為啥
process.StartInfo.Arguments = "/c" + "start D:/Tim/Bin/QQScLauncher.exe";
這個執行命令一定要加/c ,/c ,/c,重要的事說3遍 才能正常編譯並執行
cmd /c dir
:是執行完dir命令後關閉命令視窗;
cmd /k dir
:是執行完dir命令後不關閉命令視窗。
process.StartInfo.Arguments 我猜測這個呼叫的是第一張圖的視窗,而不是二圖的視窗
程式碼:
static void LaunchCommandLineApp() { Process process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.Arguments = "/c" + "start D:/Tim/Bin/QQScLauncher.exe"; process.StartInfo.UseShellExecute = false; //是否使用作業系統shell啟動 process.StartInfo.CreateNoWindow = false; //是否在新視窗中啟動該程序的值 (不顯示程式視窗) process.Start(); process.WaitForExit(); //等待程式執行完退出程序 process.Close(); }
補充:C# 執行指定命令和執行cmd命令
通常需要在程式執行過程中呼叫CMD命令並獲取資訊,
以下方法實現了該功能
/// <summary> /// 執行內部命令(cmd.exe 中的命令) /// </summary> /// <param name="cmdline">命令列</param> /// <returns>執行結果</returns> public static string ExecuteInCmd(string cmdline) { using (var process = new Process()) { 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; process.Start(); process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine(cmdline + "&exit"); //獲取cmd視窗的輸出資訊 string output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); process.Close(); return output; } }
以下方法實現了呼叫第三方實現的命令
/// <summary> /// 執行外部命令 /// </summary> /// <param name="argument">命令引數</param> /// <param name="application">命令程式路徑</param> /// <returns>執行結果</returns> public static string ExecuteOutCmd(string argument, string applocaltion) { using (var process = new Process()) { process.StartInfo.Arguments = argument; process.StartInfo.FileName = applocaltion; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.Start(); process.StandardInput.AutoFlush = true; process.StandardInput.WriteLine("exit"); //獲取cmd視窗的輸出資訊 string output = process.StandardOutput.ReadToEnd(); process.WaitForExit(); process.Close(); return output; } }
ProcessCore.ExecuteInCmd("ipconfig"); ProcessCore.ExecuteOutCmd("-I http://www.baidu.com", @"C:curl.exe");
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章