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