Maison >développement back-end >Golang >Pourquoi `exec.Command('del', ...) ` échoue-t-il dans Golang sous Windows et comment puis-je y remédier ?

Pourquoi `exec.Command('del', ...) ` échoue-t-il dans Golang sous Windows et comment puis-je y remédier ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 02:23:11541parcourir

Why Does `exec.Command(

Exécution de commandes Windows dans Golang : dépannage de l'erreur 'del' Executable Not Found

Votre tentative d'exécution de la commande "del" à l'aide de exec. Command("del", "c:\aaa.txt") dans Golang a généré un message d'erreur indiquant que le fichier exécutable n'a pas été trouvé dans le système chemin.

Contrairement à d'autres systèmes d'exploitation, Windows possède des commandes intégrées qui ne sont pas disponibles en tant qu'exécutables autonomes. Ces commandes sont exécutées via l'invite de commande (cmd.exe). Pour exécuter ces commandes dans Golang, vous devez utiliser le préfixe « cmd /c ».

L'extrait de code suivant montre comment exécuter correctement la commande « del » dans Windows à l'aide de Golang :

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

Dans cet extrait de code :

  • Nous utilisons switch runtime.GOOS pour déterminer le fonctionnement système d'exploitation.
  • Pour Windows ("windows"), nous utilisons le préfixe "cmd /C" avant la commande, suivi de la commande elle-même et de ses arguments.
  • Pour les autres systèmes d'exploitation (Mac et Linux), nous utilisons la commande "rm" au lieu de "del".

Ce code exécutera correctement la commande "del" sous Windows et supprimera le fichier spécifié, alors que la tentative précédente de directement exécuter "del" échouerait.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn