windows - 从 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 程序中将批处理作为单独的窗口触发
解决方案
从我的评论:
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)
推荐阅读
- c++ - 如何在 C++ 中删除指向数组的指针
- .net - 使用 .NET HttpWebRequest,如何添加带有单个数字的 Range 标头?
- javascript - 如何基于第三个数组从另一个数组创建一个新数组?
- docker - 从 Dockerfile 创建映像
- c# - 我无法发送电子邮件
- arrays - Handling two-digit numbers as a single element in arrays
- php - phpunit code coverage not working in a module of my project
- javascript - Deploy an application that uses a node.js server on Firebase
- sql - 如何使用正则表达式在 SQL 中提取字符串?
- aws-lambda - 错误 [a bytes-like object is required, not 'str' ] in importing CSV to DynamoDB using python