package main import ( "fmt" "os" "os/exec" "strconv" "strings" ) func isProcessExist(appName string) (bool, string, int) { appary := make(map[string]int) cmd := exec.Command("cmd", "/C", "tasklist") output, _ := cmd.Output() //fmt.Printf("fields: %v\n", output) n := strings.Index(string(output), "System") if n == -1 { fmt.Println("no find") os.Exit(1) } data := string(output)[n:] fields := strings.Fields(data) for k, v := range fields { if v == appName { appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName] } } return false, appName, -1 } func main() { fmt.Println(isProcessExist("chrome.exe")) }
輸出:
true chrome.exe 7316
查找進程並刪除進程
package main import ( "fmt" "os" "os/exec" "strconv" "strings" ) func isProcessExist(appName string) (bool, string, int) { appary := make(map[string]int) cmd := exec.Command("cmd", "/C", "tasklist") output, _ := cmd.Output() //fmt.Printf("fields: %v\n", output) n := strings.Index(string(output), "System") if n == -1 { fmt.Println("no find") os.Exit(1) } data := string(output)[n:] fields := strings.Fields(data) for k, v := range fields { if v == appName { appary[appName], _ = strconv.Atoi(fields[k+1]) return true, appName, appary[appName] } } return false, appName, -1 } func main() { apName := "notepad++.exe" fmt.Println(isProcessExist(apName)) c := exec.Command("cmd.exe", "/C", "taskkill", "/IM", apName) err := c.Start() if err != nil { fmt.Println(err) } c.Wait() }
package main import ( "fmt" "log" "os/exec" ) func main() { var inputStr string for { fmt.Println("---------------------------------------------------") fmt.Print("1->退出 ") fmt.Print("2->顯示進程 ") fmt.Print("3->結束進程 ") fmt.Println("4->顯示全部進程") fmt.Println("---------------------------------------------------") fmt.Scanln(&inputStr) if inputStr == "1" { fmt.Println("已退出...") break } else if inputStr == "2" { fmt.Print("請輸入進程名稱:") var processName string fmt.Scanln(&processName) if len(processName) == 0 { fmt.Println("進程名稱不可為空!") } else { text := "imagename eq " + processName + "*" listProcess(text) } } else if inputStr == "3" { fmt.Print("請輸入要結束的進程名稱:") var processName string fmt.Scanln(&processName) if len(processName) == 0 { fmt.Println("進程名稱不可為空!") } else { text := "imagename eq " + processName + "*" killProcess(text) } } else if inputStr == "4" { listAllProcess() } else { fmt.Println("請輸入正確的參數!") } } fmt.Scanln(&inputStr) } func listProcess(text string) { fmt.Println(text) cmd := exec.Command("tasklist", "/fi", text) out, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Println(string(out)) } func listAllProcess() { cmd := exec.Command("tasklist") out, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Println(string(out)) } func killProcess(text string) { cmd := exec.Command("taskkill", "/f", "/t", "/fi", text) out, err := cmd.CombinedOutput() if err != nil { log.Fatal(err) } fmt.Println(string(out)) }
有關tasklist相關命令請參考:https://www.cnblogs.com/saryli/p/11652789.html