144. Zugriff auf Zeichen in Textstring mit cmd bzw. Batch
Wenn Sie die Länge und Position eines Wortes oder Satzes kennen, dann
ist der Zugriff in der CMD-Welt einfacher als in anderen Subsprachen
wie Javascript oder VBS, wenn auch "zur vermeintlich einfacheren
Bearbeitung% gerne auf diese Sprachen verwiesen wird.
Im Prinzip würde ein Link auf diese englischsprachige Webseite
reichen, aber der Autor hat ja bekanntlich immer den Ehrgeiz ohne viel
Fremdwörter wie das Splitten von Strings, Zugriff auf
rechten oder String... auszukommen und es etwas einfacher zu erklären
und zusätzliche Konstruktionen und Abwandlungen hinzuzufügen, ohne
andere megakomplizierte Konstruktionen zu erschaffen, wie Sie im
Internet teilweise propagiert werden.
Dazu zitiert der Autor von der o. a. Webseite mal drei Zeilen Text, die
der Schlüssel für ihre Problemstellung sein könnten - ein Wort wurde
dabei geändert, damit das Beispiel eingedeutscht ist und die Ausgabe in
ein Textdokument (>ziel.txt) wurde angefügt, damit Sie mit copy und
Paste auch ein Ergebnis in einem Textdokument sehen:
irgendeine.bat
set str=Bundespolitik
set str=%str:~0,1%
echo.%str%>ziel.txt
Das wird wieder Zeile für Zeile erklärt
irgendeine.bat ist der Name der Batch
set str=Bundpolitik
Der Set Befehl definiert
eine Variable, wobei str
ein beliebiger Name (die Autoren hätten ruhig auch die Bezeichnung string oder var
für variable verwenden können...Namen sind hier Schall und Rauch). Nach
dem Gleichheitszeichen steht der Inhalt des Strings, also
Bundespolitik. Das Wort hat Dreizehn Zeichen, also eher eine
Unglückszahl.
Jetzt kommt der Befehl set
str=%str:~0,1% (in der
originalen englischen Fassung kommt dann immer noch eine echo Zeile dazwischen - das
ist unnötig und wird hier weggelassen).
Wir sagen der Kommandozeile also ich möchte gerne das Wort
Bundesrepublik im alten String neu definieren. Also greife ich auf die
nullte Position zu und nehme rechts davon den ersten Buchstaben.
Also ist das nun der erste Buchstabe, also ein B.
Javascript lässte ein wenig grüßen. Also sieht ein Zugriff auf den
ersten Buchstaben erstmal so aus, da die CMD den ersten Buchstaben als
Null interpretiert!!!, während die 1 nach dem Komma für die Anzahl der
Zeichen steht, bis zu der extrahiert wird (0-1,nicht verstanden? wird
gleich erklärt!):
%str:~0,1%
%str:~0,2%
%str:~0,3%
Das sind jetzt die Buchstaben B,Bu,Bun
Einzelne Buchstaben gilt das Prinzip:
%str:~0,1% B
%str:~1,1% u
%str:~2,1% n usw.
...
Ein Buchstabe wird auf die Dauer langweilig, also machen wir aus der
Bundespolitik doch einmal den Begriff politik:
set str=%str:~6,13%
Die ersten sechs Zeichen sind also B u n d e s (esoterisch
gesehen Zahl der Sünde) und dann werden ab da die restlichen Zeichen
übernommen, Das siebente Zeichen ist also das p von Politik (sieben ist
esoterisch gesehen Zahl des Unglücks im Altertum und Glücks der
Neuzeit..). Wie dem auch sei, 6+7 sind 13 (je nach Deutung also
sündig-glücklich bis sündig-unglücklich).
13 ist wiederum die Zahl, bis zu der extrahiert wird, also Stellen Sie
sich das als 6-13 vor.
Die englische o. a. Seite arbeitet den regulären weg mit negativen
Zahlen für den String von rechts, aber das ist absolut unnötig, wenn
man als positiv denkender Mensch von links nach Rechts der
Rechtsschreibung gemäß einfach von links nach rechts arbeitet.
Z. B. set str=%str:~1,3%, dann extrahiert man das
Wörtchen "und" (eben 1-3).
Das würde dann als Mid-String bezeichnet werden-:). Da wird dann das
Datum auf der englischsprachigen Seite gezeigt, also hier die logische
Ergänzung für Wörter, die nicht in der festgelegten Variable date ist,
die im Computer als Datum gespeichert wurde, und dann expandiert wird...
mal ein Beispiel mit einem Datum in der Ausgabe:
datum.bat
set str=%date%
set str=%str:~0,10%
echo.%str%>z.txt
Der Autor bearbeite mal nach dem bisherigen Schema die Variable %Date%.
Das Datum wurde einfach an die Variable str übergeben,
die nun wieder wie üblich nach Schema 0815 von Zeichen 0-10 ausgegeben
wird - ach ja, der reguläre Direktzugriff ist natürlich konformer und
leichter, wenn man es weiß wie es funktioniert...der Autor verweist
wieder an den o. a. Link unter Midstring
Die letzte Zeile der o. a. Batch heißt: echo.%str%>z.txt
Das ist nur noch die Ausgabe des neuen Strings in das Dokument z.txt,
das parallel im selben Ordner liegt , damit Sie das Ergebnis Prüfen
können.
Fazit
Manchmal hat der Autor dieser Webseite das Gefühl, dass viele
Batchschreiber die einfachsten Zusammenhänge nicht richtig vermitteln
können oder zu unnötigen Hilfskonstruktionen greifen, weil Sie das
Grundprinzip nicht verstanden haben....Die oben zitierte Seite gehört
ausdrücklich nicht dazu, aber mit den Ergänzungen dieser Seite dürften
Batchschreibern geholfen sein.