2016-07-27 8 views
0

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

+0

Was meinen Sie mit ‚eins nach dem anderen‘ a-z) als gegeben werden? Sprechen Sie über eine Liste oder etwas anderes? –

Antwort

3

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 *?[]\)
Verwandte Themen