以下是来自golang社区的一些关于windows下cmd命令操作的示例:

1 、关机、重启

 1// 关闭计算机
 2func ShutDownEXE() {
 3    fmt.Println("关闭主机")
 4    arg := []string{"-s", "-t", "20"}
 5    cmd := exec.Command("shutdown", arg...)
 6    d, err := cmd.CombinedOutput()
 7    if err != nil {
 8        fmt.Println("Error:", err)
 9        return
10    }
11    fmt.Println(string(d))
12    return
13}
14// 重启计算机
15func ReShutDownEXE() {
16    fmt.Println("重启主机")
17    arg := []string{"-r", "-t", "20"}
18    cmd := exec.Command("shutdown", arg...)
19    d, err := cmd.CombinedOutput()
20    if err != nil {
21        fmt.Println("Error:", err)
22        return
23    }
24    fmt.Println(string(d))
25    return
26}

2 、根据进程名字kill进程

 1// kill调进程  参数---taskkill /im notepad.exe /T /F
 2// 参数说明:strGameName为需要kill的进程的名字
 3func KillEXE(strGameName string) bool {
 4    fmt.Println("kill调进程游戏:", strGameName)
 5    strGameName = strGameName + ".exe"
 6    arg := []string{"/im", strGameName}
 7    cmd := exec.Command("taskkill", arg...)
 8    if err := cmd.Run(); err != nil {
 9        fmt.Println("Error: ", err)
10    }
11    return true
12}

3、操作注册表,实现程序开机启动

 1//假如你要运行的程序名字为:"autorun.exe"使用命令为
 2//"reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f"
 3//(不包括引号)其中"C:\autorun.exe"为目标程序的路径.按着这样的命令就可以将你的程序添加到启动项中了
 4// RunEXE  参数---reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\autorun.exe /f
 5func RunEXE() {
 6    fmt.Println("开机启动")
 7    strEXEName = "C:\\Windows\\System32\\auto.vbs" // 需要启动文件的路径文件
 8    arg := []string{"add", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", "/v", "auto", "/t", "REG_SZ", "/d", strEXEName, "/f"}
 9    cmd := exec.Command("reg", arg...)
10    d, err := cmd.CombinedOutput()
11    if err != nil {
12        fmt.Println("Error:", err)
13        return
14    }
15    fmt.Println(string(d))
16    return
17}

4 、实现启动执行程序隐藏进程

 1// 隐藏调进程  参数---start /b notepad.exe
 2func YinCangEXE(strEXEName string) {
 3    fmt.Println("隐藏进程")
 4    cmd := exec.Command("auto.bat")
 5    d, err := cmd.CombinedOutput()
 6    if err != nil {
 7        fmt.Println("Error:", err)
 8        return
 9    }
10    fmt.Println(string(d))
11    return
12}

5、启动执行文件

 1// 启动exe
 2// 参数 strGameName 启动的执行文件的名字;strIPandPort 传递给exe的参数
 3func CallEXE(strGameName string, strIPandPort string) {
 4    fmt.Println("CallEXE 开始启动游戏")
 5    arg := []string{strGameName, strIPandPort}
 6    fmt.Println("------------", arg)
 7    strPath := getCurrentPath()
 8    strPath = strPath + "\\TSTX\\" + strGameName  // 路径
 9    cmd := exec.Command(strPath, arg...)
10    if err := cmd.Run(); err != nil {
11        fmt.Println("Error: ", err)
12        return
13    }
14    return
15}
16// 获取当前目录
17func getCurrentPath() string {
18        s, _ := exec.LookPath(os.Args[0])
19        i := strings.LastIndex(s, "\\")
20        path := string(s[0 : i+1])
21        PathData = path
22        return path
23}