Windows で exec パッケージを使用して二重引用符で囲まれた引数を含むコマンドを実行すると、Windows が引用符を解釈する場合があります。区切り文字の代わりにコマンドとしてマークします。これにより、予期しない動作やエラーが発生する可能性があります。
たとえば、次のコード スニペットは、二重引用符で囲まれた引数を使用して find コマンドを実行しようとします。
out, err := exec.Command("find", `"SomeText"`).Output()
ただし、Windows では、これは次のコマンドが実行されます:
find /SomeText"
引用符は引数を区切るのではなく、コマンドの一部として解釈されます。
この問題を解決し、検索を正しく実行するにはWindows で exec パッケージを使用してコマンドを実行するには、次のアプローチを使用できます。
<code class="go">package main import ( "fmt" "os" "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 フィールドを使用してプロセスのコマンド ラインを明示的に設定します。 「SomeText」test.txt を検索するように CmdLine フィールドを設定すると、二重引用符で囲まれた引数がそのままの状態でコマンドが実行されます。
このアプローチにより、二重引用符で囲まれた引数がコマンドに正しく渡されるため、 Windows 上で必要な実行。
以上がWindows で exec パッケージを使用して二重引用符で囲まれた引数を含むコマンドを実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。