Gibt es eine Möglichkeit, jede einzelne Datei (mit einer Erweiterung .tcl) eines ausgewählten Verzeichnisses nacheinander in einer bestimmten Variablen in tcl zu übergeben?Jede Datei eines ausgewählten Verzeichnisses übergeben
Antwort
Eine Möglichkeit, zu tun, was ich denke, was Sie tun wollen, ist
foreach file [glob -directory $dir *.tcl] {
# do something with the filename $file
}
Der glob
Befehl eine Liste von Dateinamen zurückgibt, die das Muster in dem letzten Argument übereinstimmen (in diesem Fall *.tcl
, die „jedes Mittel Name, der in .tcl endet "). Die Option -directory
gibt an, in welchem Verzeichnis nach Dateien gesucht werden soll.
Der Befehl löst einen Fehler aus, wenn keine Dateien vorhanden sind, die mit dem Muster übereinstimmen. Um dies zu vermeiden und einfach eine leere Liste zu erhalten, verwenden Sie die Option -nocomplain
.
Der Befehl foreach
nimmt eine Variablenspezifikation, eine Liste (in diesem Fall die Liste der Dateinamen) und ein Skript an. Das Skript wird einmal für jedes Element (oder in manchen Fällen für einen Stapel von Elementen) ausgewertet, wobei die Variable auf das Element gesetzt wird.
Dokumentation: foreach, glob, File name conventions supported by Tcl commands
Syntax der passenden Tcl string:
*
entspricht einer Folge von null oder mehr Zeichen?
ein einzelnes Zeichen entspricht[chars]
entspricht einem einzelnen Zeichen in der Menge Zeichen (^ tut nicht negate; ein Bereich kann\x
entspricht dem Zeichen x, auch wenn es ein Zeichen ist das Besondere (eines*?[]\
)
Was meinen Sie mit ‚eins nach dem anderen‘ a-z) als gegeben werden? Sprechen Sie über eine Liste oder etwas anderes? –