ホームページ  >  記事  >  バックエンド開発  >  Windows 上の Go の Exec パッケージで二重引用符で囲まれた引数を含むコマンドを実行する方法

Windows 上の Go の Exec パッケージで二重引用符で囲まれた引数を含むコマンドを実行する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-30 20:13:30689ブラウズ

How to Execute Commands with Double Quoted Arguments in Go's Exec Package on Windows?

Windows の Exec パッケージで二重引用符で囲まれた引数を使用してコマンドを実行する

exec パッケージを使用してコマンドを実行する場合、二重引用符を扱う場合には細心の注意が必要です特に Windows 環境では引数を使用します。この記事では、find コマンドに関連する特有の問題を詳しく掘り下げ、それを正しく実行するための解決策を提供します。

この問題は、次のようなコマンドを実行しようとすると発生します。

out, err := exec.Command("find", `"SomeText"`).Output()

Windows では、これは二重引用符によって引数が次のようにエスケープされるため、コマンドが失敗します:

find /SomeText"

これを解決するには、次のコードに示すように、より複雑なアプローチが必要です:

<code class="go">package main

import (
    "fmt"
    "os/exec"
    "syscall"
)

func main() {
    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>

このコードでは、

  • cmd の SysProcAttr フィールドを設定してプロセス属性をカスタマイズします。
  • CmdLine フィールドを使用して、実行する正確なコマンド ラインを指定します。 quote argument.

このアプローチにより、意図どおりに二重引用符で囲まれた引数を使用して find コマンドを実行できるようになります。ただし、この動作は Go ドキュメントに明示的に文書化されていないため、広く知られている機能ではない可能性があることは注目に値します。

以上がWindows 上の Go の Exec パッケージで二重引用符で囲まれた引数を含むコマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。