我想用golang执行.exe文件并在web套接字中发送输出值。
它在linux中工作得很好,当我运行bash文件但没有在带有.exe或.bat文件的窗口中工作时(带有一些参数的.bat文件运行.exe文件)。该程序已执行但我从未看到并重述脚本的输出。我的问题是如何在Windows中获取脚本的输出。如果你可以帮助我,那将是一个折旧。
谢谢:)
cmd := exec.Command("cmd", "/C", "file.exe or file.bat", "parameters")
stdout, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
stderr, err := cmd.StderrPipe()
if err != nil {
panic(err)
}
err = cmd.Start()
if err != nil {
panic(err)
}
scannerOut := bufio.NewScanner(stdout)
for scannerOut.Scan() {
log.Printf("%s", scannerOut.Text())
err = socket.Emit("test", map[string]interface{}{"user": user, "name": Name, "data": scannerOut.Text()})
if err != nil {
log.Println(err)
}
}
感谢您的帮助我尝试了但是对我来说脚本已经执行了但我没有输出:/
output, err := exec.Command("cmd", "/C", cmdPath).CombinedOutput()
//cmd := exec.Command("ping", "google.fr", "-t")
//cmd := exec.Command("cmd", "/C", "C:/Users/Cyril/Desktop/zec_miner/miner", "--server", "zec-eu1.nanopool.org", "--user", "t1cjM242nws6QjfGWApeASG9DNDpsrHWv8A.ccl3ouf/cyril.connan@gmail.com", "--pass", "z", "--port", "6666")
/*stdout, err := cmd.StdoutPipe()*/
if err != nil {
panic(err)
}
log.Printf("%s", string(output))
err = socket.Emit("test", map[string]interface{}{"user": user, "rig_name": rigName, "data": output})
if err != nil {
log.Println(err)
}
答案 0 :(得分:0)
我创建了一个小的hello world程序hello.exe
,只打印“Hello World!”到stdout。然后以下程序调用{{1}}并打印“Hello World!”同样。
管道代码或扫描仪内容可能存在错误,请先尝试一个简单的示例,看看它失败的位置。
hello.exe