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 サイトの他の関連記事を参照してください。