Maison  >  Article  >  développement back-end  >  Comment exécuter des commandes avec des arguments entre guillemets doubles sous Windows à l'aide du package exec ?

Comment exécuter des commandes avec des arguments entre guillemets doubles sous Windows à l'aide du package exec ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 10:33:40668parcourir

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

Exécuter une commande avec un argument entre guillemets doubles sous Windows

Lors de l'utilisation du package exec pour exécuter des commandes avec des arguments entre guillemets doubles sous Windows, Windows peut interpréter la citation marque comme des commandes au lieu de délimiteurs. Cela peut entraîner un comportement et des erreurs inattendus.

Par exemple, l'extrait de code suivant tente d'exécuter la commande find avec un argument entre guillemets :

out, err := exec.Command("find", `"SomeText"`).Output()

Cependant, sous Windows, cela entraînera l'exécution de la commande suivante :

find /SomeText"

Les guillemets sont interprétés comme faisant partie de la commande, plutôt que de délimiter l'argument.

Pour résoudre ce problème et exécuter correctement la recherche sous Windows à l'aide du package exec, l'approche suivante peut être utilisée :

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

Dans ce code, le champ SysProcAttr est utilisé pour définir explicitement la ligne de commande du processus. En définissant le champ CmdLine pour rechercher "SomeText" test.txt, la commande est exécutée avec l'argument entre guillemets intact.

Cette approche permet de transmettre correctement les arguments entre guillemets à la commande, ce qui entraîne le exécution souhaitée sous Windows.

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