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>
このコードでは、
このアプローチにより、意図どおりに二重引用符で囲まれた引数を使用して find コマンドを実行できるようになります。ただし、この動作は Go ドキュメントに明示的に文書化されていないため、広く知られている機能ではない可能性があることは注目に値します。
以上がWindows 上の Go の Exec パッケージで二重引用符で囲まれた引数を含むコマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。