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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-31 10:33:40701ブラウズ

How to Execute Commands with Double-Quoted Arguments on Windows Using the exec Package?

Windows で二重引用符で囲まれた引数を含むコマンドを実行する

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

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