Go在windows下執行命令行指令


需要在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在命令行模式調用其他程序,也可能出現這個情況。

所以根據實際情況可能需要做一下轉碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM