首頁  >  文章  >  後端開發  >  如何使用 Go 的 `exec` 套件將雙引號參數傳遞給 Windows 指令?

如何使用 Go 的 `exec` 套件將雙引號參數傳遞給 Windows 指令?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 22:16:03646瀏覽

How to Pass Double-Quoted Arguments to Windows Commands Using Go's `exec` Package?

使用雙引號參數執行Windows 指令

使用exec 套件執行Windows 指令時,由於Windows 解釋的方式,參數字串中的某些字元需要特殊處理雙引號。本文研究了發生這種情況的原因,並提供了解決此問題的解決方案。

預設情況下,Windows 將參數字串中的雙引號解釋為新參數的開頭。當您想要傳遞包含空格的參數時,這會成為問題,因為 Windows 會將參數分割為多個部分。例如,執行以下命令將失敗:

exec.Command("find", `"SomeText"`).Output()

這是因為Windows 會將雙引號參數解釋為兩個單獨的參數:find 和SomeText」。

解:

要執行帶有雙引號參數的Windows 命令,需要使用syscall.SysProcAttr 中的CmdLine 字段,如下所示:

<code class="go">cmd := exec.Command(`find`)
cmd.SysProcAttr = &syscall.SysProcAttr{}
cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt`
out, err := cmd.Output()
fmt.Printf("%s\n", out)
fmt.Printf("%v\n", err)</code>

透過設定CmdLine ,您可以指定Windows 將執行的確切命令列,繞過預設參數解析,這確保雙引號參數被視為單一參數。

以上是如何使用 Go 的 `exec` 套件將雙引號參數傳遞給 Windows 指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn