ホームページ >バックエンド開発 >Golang >「exec」パッケージを使用してWindowsで二重引用符で囲まれた引数を含む「find」コマンドを実行する方法

「exec」パッケージを使用してWindowsで二重引用符で囲まれた引数を含む「find」コマンドを実行する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 01:55:291075ブラウズ

How to Execute `find` Command with Double-Quoted Arguments in Windows Using the `exec` Package?

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

Windows で二重引用符で囲まれた引数を使用して find コマンドを実行する場合exec パッケージを使用すると、Windows シェルによる予期しないエスケープが原因で問題が発生する可能性があります。この問題を解決するには、exec.Command 構造体の SysProcAttr フィールドを変更する必要があります。

次のコード スニペットは回避策を提供します。

<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>

SysProcAttr で CmdLine を直接設定することで、 exec パッケージによって実行されるデフォルトの引数解析をバイパスすることで、二重引用符で囲まれた引数を含め、コマンド ラインを希望通りに正確に指定できるようになります。残念ながら、この解決策では syscall.SysProcAttr 型を直接操作する必要がありますが、これについては十分に文書化されていません。ただし、Windows 環境で必要な引数を指定して find コマンドを実行するための信頼できる方法が提供されます。

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

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