go語言 cmd執(zhí)行命令,遇到空格或者雙引號無法執(zhí)行成功的解決方案
大部分go執(zhí)行cmd命令都是,我也是這樣寫的
package main import ( "fmt" "os/exec" ) func main() { cmdExec := `cmd /c "D:\test test\AnyDesk.exe"` cmd := exec.Command("cmd", "/C", cmdExec) out, err := cmd.Output() cmd.Run() if err != nil { fmt.Println(err) return } cmd.Wait() fmt.Println(string(out)) }
但是在使用過程中,偶然間發(fā)現(xiàn)上面所有的帶引號和空格的路徑,就出現(xiàn)了問題,提示路徑找不到。后面經(jīng)過一番的查找與測試,找到了使用如下方法去解決所面臨的問題。
package main import ( "fmt" "os/exec" "syscall" ) func main() { cmd := exec.Command("cmd.exe") cmdExec := `cmd /c "D:\test test\AnyDesk.exe"` fmt.Println(fmt.Sprintf(`/c %s`, cmdExec)) //核心點,直接修改執(zhí)行命令方式 cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c %s`, cmdExec), HideWindow: true} output, err := cmd.Output() fmt.Printf("output:\n%s\n", output) if err != nil { fmt.Printf("error: %+v\n", err) } }
修改成這樣,去測試,發(fā)現(xiàn)空格和引號問題已經(jīng)不存在。
參考地址:go語言 cmd執(zhí)行命令,遇到空格或者雙引號無法執(zhí)行成功的解決方案 - 知乎 (zhihu.com)

浙公網(wǎng)安備 33010602011771號