Wenn Sie Erfahrung mit Batchdateien sammeln, werden Sie wahrscheinlich feststellen, dass Sie Textzeichenfolgen bearbeiten müssen. Möglicherweise müssen Sie einen Benutzer zur Eingabe eines Namens oder Passworts auffordern, eine Dateiliste bearbeiten oder einen Namen in einer Telefonliste suchen. All dies sind Beispiele für die String-Verarbeitung – die Manipulation von lesbarem Text.

 

TCC enthält mehrere Funktionen, die die String-Verarbeitung erleichtern. Sie können zum Beispiel die verwenden SPEISUNG, MSGBOX und QUERYBOX Befehle für Benutzereingaben; Die ECHO und ECHOERR, ECHOS und ECHOSERR, SCREEN, SCRPUT und VSCRPUT Befehle zur Ausgabe; und das FÜR Befehl oder die @FILEREAD Funktion zum Durchsuchen der Zeilen einer Datei. Zusätzlich, variable Funktionen bieten eine breite Palette von Strings und Zeichenverarbeitung Funktionen.

 

Angenommen, Sie benötigen eine Batchdatei, die einen Benutzer zur Eingabe eines Namens auffordert, den Namen in einen Vor- und einen Nachnamen aufteilt und dann ein hypothetisches LOGIN-Programm ausführt. LOGIN erwartet die Syntax /F:erster /L:letzter wobei sowohl der Vor- als auch der Nachname in Großbuchstaben geschrieben sind und keiner der Namen länger als 8 Zeichen ist. Hier ist eine Möglichkeit, eine solche Batchdatei zu schreiben:

 

@ Echo off

setlocal

Unalias *

Eingabe Geben Sie Ihren Namen ein (keine Initialen):  %%name

 

set first=%@word[0,%name]

set flen=%@len[%first]

set last=%@word[1,%name]

set llen=%@len[%last]

 

wenn %flen gt 8 .or. %llen gt 8 dann

  echo Vor- oder Nachname zu lang

  verlassen

endiff

 

login /F:%@upper[%first] /L:%@upper[%last]

endlocal

 

Die SETLOCAL Der Befehl am Anfang dieser Batchdatei speichert die Umgebung und Aliase. Dann ist die UNALIAS * Der Befehl entfernt alle vorhandenen Aliase, sodass sie das Verhalten der Befehle im Rest der Batchdatei nicht beeinträchtigen. Der erste Zeilenblock endet mit a SPEISUNG Befehl, der den Benutzer auffordert, einen Namen einzugeben. Die Eingabe des Benutzers wird in der Umgebungsvariablen NAME gespeichert.

 

Der zweite Zeilenblock extrahiert den Vor- und Nachnamen des Benutzers aus der Variablen NAME und berechnet deren Länge. Es speichert den Vor- und Nachnamen sowie deren Länge in zusätzlichen Umgebungsvariablen. Notiere dass der @WORT Die Funktion nummeriert das erste Wort mit 0, nicht mit 1.

 

Die IFF Der Befehl im dritten Zeilenblock testet die Länge des Vor- und Nachnamens. Wenn eines davon länger als 8 Zeichen ist, zeigt die Batchdatei eine Fehlermeldung an und wird beendet. (QUERYBOX kann die Länge des Eingabetextes einfacher begrenzen mit /L schalten. Wir haben oben eine etwas umständlichere Methode verwendet, um die Verwendung von String-Funktionen in Batch-Dateien zu demonstrieren.)

 

Schließlich führt die Batchdatei im letzten Block das LOGIN-Programm mit den entsprechenden Parametern aus und verwendet dann das ENDLOCAL Befehl zum Wiederherstellen der ursprünglichen Umgebung und Aliasliste. Gleichzeitig verwirft ENDLOCAL die temporären Variablen, die die Batchdatei verwendet hat (NAME, FIRST, FLEN usw.).

 

Wenn Sie Zeichenfolgen verarbeiten, müssen Sie auch einige häufige Fallstricke vermeiden. Das größte Problem ist der Umgang mit Sonderzeichen.

 

Angenommen, Sie haben eine Batch-Datei mit diesen beiden Befehlen, die einfach eine Zeichenfolge akzeptieren und anzeigen:

 

Eingabe Geben Sie eine Zeichenfolge ein:  %%str

echo %str

 

Diese Zeilen sehen sicher aus, aber was passiert, wenn der Benutzer die Zeichenfolge „some > none“ (ohne Anführungszeichen) eingibt? Nachdem die Zeichenfolge in die Variable STR eingefügt wurde, wird die zweite Zeile

 

echo some > none

 

Die ">" ist ein Umleitung Symbol, sodass die Zeile die Zeichenfolge „some“ wiedergibt und sie in eine Datei namens NONE umleitet – wahrscheinlich nicht das, was Sie erwartet haben. Sie könnten es mit verwenden Anführungszeichen um ein solches Problem zu vermeiden, aber das wird nicht ganz funktionieren. Wenn Sie Anführungszeichen (ECHO „%STR“) verwenden, gibt der Befehl die vierstellige Zeichenfolge %STR zurück. Namen von Umgebungsvariablen werden nicht erweitert, wenn sie in Anführungszeichen stehen.

 

Wenn Sie doppelte Anführungszeichen (ECHO „%STR“) verwenden, wird die vom Benutzer eingegebene Zeichenfolge ordnungsgemäß angezeigt, ebenso wie die doppelten Anführungszeichen. Mit doppelten Anführungszeichen würde die Ausgabe so aussehen:

 

„einige > keine“

 

Wie Sie sich vorstellen können, wird dieses Problem viel schwieriger, wenn Sie versuchen, Text aus einer Datei zu verarbeiten. Sonderzeichen im Text können in Ihren Batchdateien zu allerlei Verwirrung führen. Es kann praktisch unmöglich sein, Text mit Anführungszeichen, doppelten Anführungszeichen oder Umleitungssymbolen korrekt zu verarbeiten.

 

Eine Möglichkeit, diese potenziellen Probleme zu überwinden, ist die Verwendung von SETDOS /X Befehl zum vorübergehenden Deaktivieren von Umleitungssymbolen und anderen Sonderzeichen. Die obige zweizeilige Batchdatei würde mit viel größerer Wahrscheinlichkeit die erwarteten Ergebnisse liefern, wenn sie auf diese Weise umgeschrieben würde:

 

setdos /x-15678

Eingabe Geben Sie eine Zeichenfolge ein:  %%str

echo %str

setdos /x0

 

Die Die erste Zeile deaktiviert die Aliasverarbeitung und deaktiviert mehrere Sondersymbole, einschließlich des Befehlstrennzeichens und aller Umleitungssymbole. Sobald die Zeichenfolge verarbeitet wurde, werden in der letzten Zeile die Funktionen wieder aktiviert, die in der ersten Zeile deaktiviert wurden.

 

Wenn Sie erweiterte String-Verarbeitungsfunktionen benötigen, die über die von bereitgestellten hinausgehen TCC, sollten Sie die Verwendung in Betracht ziehen Lua, Perl, Python, REXX, oder auch Ruby Sprachen. Unsere Produkte können Lua-, Perl-, Python-, REXX- und Ruby-Programme intern ausführen und unterstützen auch die interne Auswertung einzelner Perl-, Python-, REXX- und Ruby-Ausdrücke.