Platzhalter und reguläre Ausdrücke

Mit Platzhaltern können Sie eine Datei oder eine Gruppe von Dateien angeben, indem Sie einen Teil eines Dateinamens eingeben. Das entsprechende Verzeichnis wird durchsucht, um alle Dateien zu finden, die mit dem Teilnamen übereinstimmen. Sie können auch Dateien mit regulären Ausdrücken angeben .

 

Wildcards werden normalerweise verwendet, um anzugeben, welche Dateien  von einem Befehl verarbeitet werden sollen.  Wenn Sie angeben müssen, welche Dateien nicht verarbeitet werden sollen, siehe Dateiausschlussbereiche (für interne Befehle) oder EXCEPT (für externe Befehle).

 

Die meisten internen Befehle akzeptieren Dateinamen mit Platzhaltern überall dort, wo ein vollständiger Dateiname verwendet werden kann. Es gibt zwei Platzhalterzeichen, das Sternchen * und das Fragezeichen ?.  Zusätzlich können Sie eine Reihe von Zeichen angeben .  Beachten Sie die Probleme bei der Suche nach kurzen Dateinamen.

 

WARNUNG: Wenn Sie in einem Befehl wie FOR oder DO mit einem Platzhalter nach zu verarbeitenden Dateien suchen  und neue Dateinamen erstellen (sei es durch Umbenennen bestehender Dateien oder durch Erstellen neuer Dateien), können die neuen Dateinamen mit Ihrem ausgewählten Platzhalter übereinstimmen und dazu führen, dass Sie sie erneut verarbeiten müssen.

 

TCC unterstützt auch Platzhalter in den Verzeichnisnamen (aber nicht in den Laufwerksnamen).  Sie können die Rekursion von Unterverzeichnissen steuern, indem Sie * oder ** im Pfad angeben . Ein * entspricht einer einzelnen Unterverzeichnisebene; ein ** entspricht allen Unterverzeichnisebenen für diesen Pfadnamen. Verzeichnis-Wildcards unterstützen auch reguläre Ausdrücke. Verzeichnis-Wildcards können nicht mit der Option /O:... verwendet werden (die Einträge werden vor der Ausführung des Befehls sortiert). Und denken Sie sehr genau nach, bevor Sie Verzeichnisplatzhalter mit der Option /S (Unterverzeichnisse rekursieren) verwenden, da dies mit ziemlicher Sicherheit zu unerwarteten Ergebnissen führen wird! Es gibt einige Befehle, die keine Verzeichnisplatzhalter unterstützen, da sie sinnlos oder destruktiv wären (z.B. TREE, @FILEOPEN, @FILEDATE, etc.).

 

Ein Beispiel:

 

del c:\test\test2\*\foobarLöschen Sie die Datei foobar in einem beliebigen Unterverzeichnis von c:\test\test2 (aber nicht in einem ihrer Unterverzeichnisse).
del c:\test\**\*foo*\foobarLöschen Sie die Datei foobar in allen Unterverzeichnissen unter c:\test (und allen ihren Unterverzeichnissen) , die "foo" irgendwo im Namen haben.
del c:\test\t*2\foobarLöschen Sie die Datei foobar in allen Unterverzeichnissen von c:\test, die mit einem t beginnen und mit einer 2enden .

 

Asterisk * Platzhalter

 

Ein Sternchen * in einer Dateispezifikation bedeutet "eine Menge beliebiger Zeichen oder kein Zeichen an dieser Stelle". Dieser Befehl zeigt zum Beispiel eine Liste aller Dateien (einschließlich Verzeichnisse, aber mit Ausnahme der Dateien und Verzeichnisse mit mindestens einem der Attribute hidden und system) im aktuellen Verzeichnis an :

 

dir *

 

Wenn Sie alle Dateien mit einer . TXT-Erweiterungsehen wollen :

 

dir *.txt

 

Wenn Sie wissen, dass die von Ihnen gesuchte Datei einen Basisnamen hat, der mit STbeginnt , und eine Erweiterung, die mit .D beginnt , können Sie sie auf diese Weise finden. Dateinamen wie STATE.DAT, STEVEN.DOC und ST.D werden alle angezeigt:

 

dir st*.d*

 

TCC können Sie auch das Sternchen verwenden, um Dateinamen mit bestimmten Buchstaben im Namen zu finden. Das folgende Beispiel zeigt alle Dateien mit der Erweiterung .TXT an , die die Buchstaben AM an beliebiger Stelle in ihrem Basisnamen  enthalten .  Es zeigt zum BeispielAMPLE.TXT, STAMP.TXT, CLAM.TXT und AM.TXT an, ignoriert aber CLAIM.TXT:

 

dir *am*.txt

 

Fragezeichen ? als Platzhalter

 

Ein Fragezeichen ? passt zu jedem einzelnen Zeichen im Dateinamen. Sie können das Fragezeichen an eine beliebige Stelle im Dateinamen setzen und so viele Fragezeichen verwenden, wie Sie benötigen. Im folgenden Beispiel werden Dateien mit Namen wie LETTER.DOC, LATTER.DAT und LITTER.DU angezeigt :

 

dir l?tter.d??

 

Die Verwendung eines Sternchen-Platzhalters vor anderen Zeichen und die unten besprochenen Zeichenbereiche sind Erweiterungen der Standard-Microsoft-Platzhaltersyntax und funktionieren wahrscheinlich nicht richtig mit anderer Software als TCC.

 

"Zusätzliche Fragezeichen in der Platzhalterangabe werden ignoriert, wenn der Dateiname kürzer ist als die Platzhalterangabe. Wenn Sie zum Beispiel Dateien mit den Namen LETTER.DOC, LETTER1.DOC und LETTERA.DOC haben , zeigt dieser Befehl alle drei Namen an:

 

dir letter?.doc

 

Die Datei LETTER.DOC wird angezeigt, da das "zusätzliche" Fragezeichen am Ende von LETTER? beim Abgleich mit dem kürzeren Namen LETTER ignoriert wird.

 

Spezifischer Zeichensatz

 

In manchen Fällen  kann der  Platzhalter ? zu allgemein sein. TCC erlaubt es Ihnen auch, den genauen Zeichensatz anzugeben, den Sie an einer bestimmten Stelle im Dateinamen akzeptieren (oder ausschließen) möchten, indem Sie eckige Klammern [ ] verwenden . Innerhalb der Klammern können Sie die einzelnen zulässigen Zeichen oder Zeichenbereiche angeben. Wenn Sie zum Beispiel LETTER0.DOC bis LETTER9.DOC abgleichen möchten , könnten Sie diesen Befehl verwenden:

 

dir letter[0-9].doc

 

Auf diese Weise könnten Sie alle Dateien finden, die einen Vokal als zweiten Buchstaben in ihrem Namen haben. Dieses Beispiel zeigt auch, wie Sie die Platzhalterzeichen mischen können:

 

dir ?[aeiouy]*

 

Sie können eine Gruppe von Zeichen oder einen Bereich von Zeichen ausschließen, indem Sie ein Ausrufezeichen [!] als erstes Zeichen innerhalb der Klammernverwenden. In diesem Beispiel werden alle Dateinamen angezeigt, die mindestens 2 Zeichen lang sind, außer denen, die einen Vokal als zweiten Buchstaben im Namen haben:

 

dir ?[!aeiouy]*

 

Das nächste Beispiel, das Dateien wie AIP, BIP und TIP, aber nicht NIPauswählt , zeigt, wie Sie mehrere Bereiche innerhalb der Klammern verwenden können. Es akzeptiert eine Datei, die mit A, B, C, D, T, U oder V beginnt :

 

dir [a-dt-v]ip

 

Sie können innerhalb der Klammern ein Fragezeichen verwenden, das jedoch eine etwas andere Bedeutung hat als ein normaler (nicht in Klammern stehender) Fragezeichenplatzhalter. Ein normales Fragezeichen passt auf jedes Zeichen, wird aber ignoriert, wenn es auf einen Namen passt, der kürzer als die Platzhalterangabe ist, wie oben beschrieben. Ein Fragezeichen in eckigen Klammern passt auf jedes Zeichen, wird abernicht verworfen, wenn es auf kürzere Dateinamen passt. Zum Beispiel:

 

dir letter[?].doc

 

zeigt LETTER1.DOC und LETTERA.DOCan , aber nicht LETTER.DOC.

 

Sie können jedes der Platzhalterzeichen in einer beliebigen Kombination innerhalb eines einzelnen Dateinamens wiederholen. Der folgende Befehl listet beispielsweise alle Dateien auf, die ein A, B oder C als drittes Zeichen enthalten , gefolgt von null oder mehr weiteren Zeichen, gefolgt von einem D, E oder F, optional gefolgt von weiteren Zeichen, und mit einer Erweiterung, die mit P oder Q beginnt . Sie werden wahrscheinlich nichts derartig Komplexes tun müssen, aber wir haben es eingefügt, um Ihnen die Flexibilität der erweiterten Platzhalter zu zeigen:

 

dir ??[abc]*[def]*.[pq]*

 

Sie können die Syntax der eckigen Klammern auch verwenden, um einen Konflikt zwischen langen Dateinamen, die Semikolons [;] enthalten, und der Verwendung eines Semikolons zur Angabe einer Include-Liste zuumgehen.  Wenn Sie zum Beispiel eine Datei auf einem LFN-Laufwerk mit dem Namen C:\DATA\LETTER1;V2 haben  und Sie diesen Befehl eingeben:

 

del \data\letter1;v2

 

eingeben, werden Sie nicht das erwartete Ergebnis erhalten. Anstatt die genannte Datei zu löschen, TCC versucht ,LETTER1 und dann V2zu löschen , weil das Semikolon eine Include-Liste anzeigt . Wenn Sie jedoch eckige Klammern um das Semikolon herum verwenden, wird es als Dateinamenszeichen und nicht als Trennzeichen für eine Include-Liste interpretiert. Zum Beispiel würde dieser Befehl die oben genannte Datei löschen:

 

del \data\letter1[;]v2

 

Übereinstimmende kurze Dateinamen

 

Wenn die Konfigurationsoption Search for SFNs (Suche nach SFNs ) aktiviert ist, akzeptiert die Wildcard-Suche eine Übereinstimmung entweder mit dem LFN oder dem SFN, um dem Verhalten von CMD zu entsprechen. Dies kann dazu führen, dass einige Dateien nur aufgrund der SFN-Übereinstimmung gefunden werden. In den meisten Situationen ist dies nicht wünschenswert und kann durch Deaktivieren der Option (Standardeinstellung) vermieden werden.

 

Hinweis: Der Expansionsprozess für den Platzhalter versucht, sowohl die CMD-ähnliche"Erweiterungs"-Übereinstimmung (nur eine Erweiterung, am Ende des Wortes) als auch die erweiterte TCC Dateinamenabgleich (erlaubt Dinge wie *.*.abc), wenn ein Sternchen im Ziel eines COPY-, MOVE- oder REN/RENAME-Befehls auftaucht.

 

Reguläre Ausdrücke

 

Sie können auch reguläre Ausdrücke für Dateinamenprüfungen verwenden .  (Die Art der zu verwendenden regulären Ausdrücke wird durch die Option Syntax der regulären Ausdrücke festgelegt  ).

 

Die Syntax lautet:

 

::regex

 

Zum Beispiel:

 

dir ::ca[td]

 

Beachten Sie, dass die Verwendung regulärer Ausdrücke die Verzeichnissuche verlangsamt - da Windows sie nicht unterstützt, muss der Parser den Dateinamen in *umwandeln , alle Dateinamen abrufen und sie dann mit dem Ausdruck abgleichen.

 

Wenn Sie Sonderzeichen (Leerzeichen, Umleitungszeichen, Escape-Zeichen usw.) in Ihrem regulären Ausdruck verwenden, müssen Sie ihn in doppelte Anführungszeichen einschließen. Ein Beispiel:

 

dir "::^\w{1,8}\.btm$"

 

Weitere Informationen über die Syntax finden Sie unter Syntax regulärer Ausdrücke.

 

Take Command und TCC einen Dialog zum Analysieren regulärer Ausdrücke einbinden (Strg-F7 in der TCC Befehlszeile oder unter dem Menü Extras in Take Command.) Es gibt zwei Eingabefelder:

 

1) Das erste ist für den zu prüfenden regulären Ausdruck. Wenn der reguläre Ausdruck gültig ist, zeigt der Dialog ein grünes Häkchen rechts neben dem Eingabefeld für den Ausdruck an. Ist der reguläre Ausdruck ungültig, zeigt das Dialogfeld ein rotes X an.

2) Das zweite Eingabefeld enthält den Text, den Sie mit dem regulären Ausdruck vergleichen möchten. Wenn der Text mit dem regulären Ausdruck übereinstimmt, zeigt das Dialogfeld ein grünes Häkchen rechts neben dem Test-Eingabefeld an. Stimmt der Text nicht überein, zeigt das Dialogfeld ein rotes X an.

 

Sie können die Syntax des regulären Ausdrucks wählen, die Sie verwenden möchten (Perl, Ruby, Java, usw.). Der Analyzer verwendet standardmäßig die aktuellen Standardwerte für Take Command und TCC.

 

rege28