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!