美文网首页
利用go写个Windows简单进程管理工具

利用go写个Windows简单进程管理工具

作者: ouyangan | 来源:发表于2017-01-07 10:48 被阅读261次

    Windows环境下做开发的时候经常需要批量结束进程,比如java.exe ,于是写了这个小工具,输入模糊的进程名,自动批量结束进程

    代码

    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) {
        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))
    }
    

    效果图

    Paste_Image.png

    相关文章

      网友评论

          本文标题:利用go写个Windows简单进程管理工具

          本文链接:https://www.haomeiwen.com/subject/wiqfbttx.html