ホームページ >バックエンド開発 >Golang >Windows 上の Golang で `exec.Command('del', ...) ` が失敗するのはなぜですか?どうすれば修正できますか?

Windows 上の Golang で `exec.Command('del', ...) ` が失敗するのはなぜですか?どうすれば修正できますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-29 02:23:11528ブラウズ

Why Does `exec.Command(

Golang での Windows コマンドの実行: 'del' 実行可能ファイルが見つからないエラーのトラブルシューティング

exec を使用して "del" コマンドを実行しようとしました。 Golang 内で Command("del", "c:\aaa.txt") を実行すると、次のことを示すエラー メッセージが表示されました。実行可能ファイルがシステム パスに見つかりませんでした。

他のオペレーティング システムとは異なり、Windows にはスタンドアロンの実行可能ファイルとして使用できないコマンドが組み込まれています。これらのコマンドは、コマンド プロンプト (cmd.exe) を通じて実行されます。 Golang でこれらのコマンドを実行するには、「cmd /c」プレフィックスを使用する必要があります。

次のコード スニペットは、Golang を使用して Windows で「del」コマンドを正しく実行する方法を示しています。

package main

import (
    "fmt"
    "os/exec"
    "runtime"
)

func main() {
    var c *exec.Cmd

    switch runtime.GOOS {
    case "windows":
        c = exec.Command("cmd", "/C", "del", "D:\a.txt")

    default: // Mac & Linux
        c = exec.Command("rm", "-f", "/d/a.txt")
    }

    if err := c.Run(); err != nil {
        fmt.Println("Error:", err)
    }
}

このコード スニペットでは:

  • スイッチ runtime.GOOS を使用して動作を決定します。 system.
  • Windows (「windows」) の場合、コマンドの前に「cmd /C」プレフィックスを使用し、その後にコマンド自体とその引数が続きます。
  • その他のオペレーティング システム (Mac) の場合Linux および Linux) では、「del」の代わりに「rm」コマンドを使用します。

このコードは、Windows では「del」コマンドを正しく実行し、指定されたファイルを削除します。 「del」を直接実行しようとする前回の試みは失敗します。

以上がWindows 上の Golang で `exec.Command('del', ...) ` が失敗するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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