需要在Go寫的服務里面調用命令行或者批處理,並根據返回的結果做處理。
在網上搜索了一翻,驗證成功,現記錄如下:
1 cmd := exec.Command("cmd") 2 // cmd := exec.Command("powershell") 3 in := bytes.NewBuffer(nil) 4 cmd.Stdin = in //綁定輸入 5 var out bytes.Buffer 6 cmd.Stdout = &out //綁定輸出 7 go func() { 8 // start stop restart 9 in.WriteString("nssm restart uplusSVCWB\n") //寫入你的命令,可以有多行,"\n"表示回車 10 }() 11 err = cmd.Start() 12 if err != nil { 13 log.Fatal(err) 14 } 15 log.Println(cmd.Args) 16 err = cmd.Wait() 17 if err != nil { 18 log.Printf("Command finished with error: %v", err) 19 } 20 rt := out.String() //mahonia.NewDecoder("gbk").ConvertString(out.String()) // 21 fmt.Println(rt) 22 23 if strings.ContainsAny(rt, "成功") { 24 fmt.Fprintf(w, "{\"msg\":\"%s\"}", "操作成功") 25 } else { 26 fmt.Fprintf(w, "{\"msg\":\"%s\"}", rt) 27 }
windows下面用cmd返回中文會出現亂碼,即使是用powershell在命令行模式調用其他程序,也可能出現這個情況。
所以根據實際情況可能需要做一下轉碼。