Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich den Befehl „find“ mit Argumenten in doppelten Anführungszeichen in Windows mithilfe des Pakets „exec“ aus?

Wie führe ich den Befehl „find“ mit Argumenten in doppelten Anführungszeichen in Windows mithilfe des Pakets „exec“ aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 01:55:29993Durchsuche

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

Ausführen des Suchbefehls mit Argumenten in doppelten Anführungszeichen in Windows mithilfe des Exec-Pakets

Beim Ausführen des Suchbefehls mit Argumenten in doppelten Anführungszeichen in Windows Bei Verwendung des Exec-Pakets können Benutzer aufgrund unerwarteter Escape-Fehler durch die Windows-Shell auf Probleme stoßen. Um dieses Problem zu beheben, muss das SysProcAttr-Feld der exec.Command-Struktur geändert werden.

Der folgende Codeausschnitt bietet eine Problemumgehung:

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

Durch die direkte Festlegung von CmdLine in SysProcAttr Wir umgehen die vom Exec-Paket durchgeführte Standardargumentenanalyse, sodass wir die Befehlszeile genau so angeben können, wie wir es möchten, einschließlich Argumenten in doppelten Anführungszeichen. Leider erfordert diese Lösung eine direkte Manipulation des Typs syscall.SysProcAttr, was nicht gut dokumentiert ist. Es bietet jedoch eine zuverlässige Möglichkeit, den Suchbefehl mit den gewünschten Argumenten in Windows-Umgebungen auszuführen.

Das obige ist der detaillierte Inhalt vonWie führe ich den Befehl „find“ mit Argumenten in doppelten Anführungszeichen in Windows mithilfe des Pakets „exec“ aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn