从Go程序调用Windows批处理文件,以便在新窗口中打开

时间:2018-04-27 13:24:10

标签: windows batch-file go cmd

我有一个名为cfw.bat的批处理文件,它将接受1个命令行参数。

我需要从go程序中调用或打开这个批处理文件,而不是在go中作为命令运行(因为Go中的命令没有考虑窗口的命令)。

这是我的代码

    foundationUrl := foundations.GetFoundationApiUrl(foundationNumber)
    command := exec.Command("call","cfw.bat",foundationUrl)
    fmt.Print("Executing Command >>> ")
    fmt.Println(command.Args)
    bs,err :=command.CombinedOutput()

这是我得到的错误

Executing Command >>> [call cfw.bat https://api.sys-pcf.com]
Error exec: "call": executable file not found in %PATH%

无法执行windows命令..如果我直接从go代码使用cfw.bat执行,它将无法工作,因为Go使用的shell只支持Linux / Unix

请帮助我们了解如何从我的Go程序中单独触发批处理窗口

1 个答案:

答案 0 :(得分:2)

来自我的评论:

cmd := exec.Command("cmd.exe", "/C", "C:\\me\\fcf\\cfw.bat", foundationUrl)

反斜杠加倍并提供cfw.bat的完整路径

替代方案可能是使用反引号:

cmd := exec.Command(`cmd.exe`, `/C`, `C:\me\fcf\cfw.bat`, foundationUrl)

如果您只想在另一个cmd.exe实例中打开批处理文件,那么可能会这样做:

cmd := exec.Command(`cmd.exe`, `/C`, `Start C:\me\fcf\cfw.bat`, foundationUrl)