首頁 > 軟體

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。如有錯誤或未考慮完全的地方,望不吝賜教。


IT145.com E-mail:sddin#qq.com