Direkt zum Inhalt

Platzhalter in Windows-Pfadnamen

Benutzer fordern seit Jahren die Möglichkeit, Platzhalter sowohl in Verzeichnisnamen als auch in Dateinamen zu verwenden. Um beispielsweise Dateien zu kopieren, deren Name mit „foo*“ übereinstimmt und deren Name des übergeordneten Verzeichnisses mit „a*z“ übereinstimmt:

Kopieren Sie c:\myfiles\a*z\foo* d:\foo

Oder um Dateien, deren Name mit „foo*“ übereinstimmt, in ein beliebiges Unterverzeichnis von c:\myfiles zu kopieren:

Kopieren Sie c:\myfiles\**\foo* d:\foo

Diese Arten von Platzhaltern sind in Linux üblich, aber der Mangel an Windows-Apps, die diese Syntax unterstützen, bedeutet, dass Windows Dateinamen mit Platzhaltern in der Pfadnamenkomponente nicht besonders willkommen (OK, unerbittlich feindselig!) ist. Aber nach viel zu viel Mühe und Versuch und Irrtum konnten wir Verzeichnis-Wildcards implementieren TCC 12.0 (nur für interne Befehle und Funktionen).

Sie können die Unterverzeichnisrekursion steuern, indem Sie * oder ** im Pfad angeben. Ein * (oder ein Teil des Namens mit einem * und/oder einem oder mehreren ?) entspricht einer einzelnen Unterverzeichnisebene; Ein ** stimmt mit allen Unterverzeichnisebenen für diesen Pfadnamen überein. Sie können auch reguläre Ausdrücke als Verzeichnisplatzhalter verwenden.

Verzeichnis-Platzhalter können nicht mit der Option /O:… verwendet werden (die Einträge sortiert, bevor der Befehl ausgeführt wird). Und denken Sie sorgfältig darüber nach, bevor Sie Verzeichnis-Platzhalter mit der Option /S (rekursive Unterverzeichnisse) verwenden, da dies mit ziemlicher Sicherheit zu unerwarteten Ergebnissen führen wird!

Es gibt einige Befehle und Funktionen, die Verzeichnis-Platzhalter nicht unterstützen, da diese bedeutungslos oder destruktiv wären (z. B. TREE, @FILEOPEN, @FILEDATE usw.).