首页 > 解决方案 > 从 Go 程序调用 Windows 批处理文件,使其在新窗口中打开

问题描述

我有一个名为 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 程序中将批处理作为单独的窗口触发

标签: windowsbatch-filegocmd

解决方案


从我的评论:

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)

推荐阅读