Maison >développement back-end >Golang >Comment exécuter la commande « find » avec des arguments entre guillemets doubles dans Windows à l'aide du package « exec » ?

Comment exécuter la commande « find » avec des arguments entre guillemets doubles dans Windows à l'aide du package « exec » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 01:55:291072parcourir

How to Execute `find` Command with Double-Quoted Arguments in Windows Using the `exec` Package?

Exécution de la commande Find avec des arguments entre guillemets doubles dans Windows à l'aide du package Exec

Lors de l'exécution de la commande Find avec des arguments entre guillemets doubles dans Windows En utilisant le package exec, les utilisateurs peuvent rencontrer des problèmes en raison d'un échappement inattendu par le shell Windows. Pour résoudre ce problème, il est nécessaire de modifier le champ SysProcAttr de la structure exec.Command.

L'extrait de code suivant fournit une solution de contournement :

<code class="go">package main

import (
    "fmt"
    "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>

En définissant CmdLine directement dans SysProcAttr, nous contournons l'analyse des arguments par défaut effectuée par le package exec, ce qui nous permet de spécifier la ligne de commande exactement comme nous le souhaitons, y compris les arguments entre guillemets. Malheureusement, cette solution nécessite une manipulation directe du type syscall.SysProcAttr, qui n'est pas bien documenté. Cependant, il fournit un moyen fiable d'exécuter la commande find avec les arguments souhaités dans les environnements 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