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

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

Mary-Kate Olsen
發布: 2024-11-01 22:16:03
原創
750 人瀏覽過

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 指令,您需要使用CmdLine 欄位syscall.SysProcAttr,如下所示:

<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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板