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.




 

Impressum
Datenschutz