zoukankan      html  css  js  c++  java
  • 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
    ") //写入你的命令,可以有多行,"
    "表示回车
    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在命令行模式调用其他程序,也可能出现这个情况。

    所以根据实际情况可能需要做一下转码。

  • 相关阅读:
    第六章:面向对象(下)
    第四章:流程控制和数组
    第三章:数据类型和运算符
    第二章:理解面向对象
    数据库:表设计阶段
    第一章:java语言概述与开发环境
    HTML DOM
    补漏
    不错的资源哦
    阻止事件冒泡
  • 原文地址:https://www.cnblogs.com/codingnote/p/11265376.html
Copyright © 2011-2022 走看看