
71590
05.11.2008, aktualisiert um 17:12:12 Uhr
Batch - Anzahl der Buchstaben in einer Zeichenkette
Hallo,
ich bin neu hier und habe eine (komplizierte?) Frage:
Ist es in einer .bat-Datei möglich, die Anzahl der einzelnen Buchstaben (und Zahlen) aus einer Variablen (Inhalt der Variablen ist ein Wort oder eine Zeichenkette) herauszufinden?
Also zum Beispiel:
Die Variable enthält das Wort "Hallo". Das Schript müsste dann bemerken, dass ein "a", ein "h", zwei "l" und ein "o" in der Variablen enthalten sind.
Groß- und Kleinschreibung ist egal, Großbuchstaben sollen wie kleine Buchstaben behandelt werden.
Wenn das möglich ist, wie könnte man dann z.B. wenn ein "a" festgestellt wird das Programm anweisen, die Zahl "26" zu einer anderen Variablen dazu zu zählen? Oder bei einem "b" die 25; bei einem "c" die 24; [...]; bei einem "x" die 3; bei einem "y" die 2; bei einem "z" die 1?
Also für "Hallo" ergäbe sich dann die folgende Rechnung:
h = 19
a = 26
l = 15
l = 15
o = 12
h+a+l+l+o = 19+26+15+15+12 = 87
Und dann noch die einzelnen Werte multiplizieren:
h*a*l*l*o = 19*26*15*15*12 = 1333800
Dann sollen die Werte durcheinander geteilt werden:
1333800/87 = 15331,034482758620689655172413793
Die Kommastellen sollen entfernet werden; die Zahl soll gerundet werden:
1333800/87 = 15331
Wie kann man das in einer .bat-Datei realisieren?
ich bin neu hier und habe eine (komplizierte?) Frage:
Ist es in einer .bat-Datei möglich, die Anzahl der einzelnen Buchstaben (und Zahlen) aus einer Variablen (Inhalt der Variablen ist ein Wort oder eine Zeichenkette) herauszufinden?
Also zum Beispiel:
Die Variable enthält das Wort "Hallo". Das Schript müsste dann bemerken, dass ein "a", ein "h", zwei "l" und ein "o" in der Variablen enthalten sind.
Groß- und Kleinschreibung ist egal, Großbuchstaben sollen wie kleine Buchstaben behandelt werden.
Wenn das möglich ist, wie könnte man dann z.B. wenn ein "a" festgestellt wird das Programm anweisen, die Zahl "26" zu einer anderen Variablen dazu zu zählen? Oder bei einem "b" die 25; bei einem "c" die 24; [...]; bei einem "x" die 3; bei einem "y" die 2; bei einem "z" die 1?
Also für "Hallo" ergäbe sich dann die folgende Rechnung:
h = 19
a = 26
l = 15
l = 15
o = 12
h+a+l+l+o = 19+26+15+15+12 = 87
Und dann noch die einzelnen Werte multiplizieren:
h*a*l*l*o = 19*26*15*15*12 = 1333800
Dann sollen die Werte durcheinander geteilt werden:
1333800/87 = 15331,034482758620689655172413793
Die Kommastellen sollen entfernet werden; die Zahl soll gerundet werden:
1333800/87 = 15331
Wie kann man das in einer .bat-Datei realisieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101077
Url: https://administrator.de/forum/batch-anzahl-der-buchstaben-in-einer-zeichenkette-101077.html
Ausgedruckt am: 22.05.2025 um 13:05 Uhr
5 Kommentare
Neuester Kommentar
Hallo Exterminator und willkommen im Forum!
Soferne die Strings nicht zu lange werden (die höchste in Batch darstellbare Zahl ist 2147483647, was, wegen der Multiplikation, durchschnittlich etwa 7 bis 8 Zeichen erlauben würde) sollte das etwa so gehen:
Funktionieren sollte das Ganze für die 26 Buchstaben des (engl) Alphabets (sobald Du in der Liste oben die "Löcher" gefüllt hast
) - Sonderzeichen müsstest Du testen (mit "!" wird es zB nicht klappen). Groß-/Kleinschreibung wird übrigens nicht unterschieden.
Grüße
bastla
Soferne die Strings nicht zu lange werden (die höchste in Batch darstellbare Zahl ist 2147483647, was, wegen der Multiplikation, durchschnittlich etwa 7 bis 8 Zeichen erlauben würde) sollte das etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set a=26
set h=19
set l=15
set o=12
set "Text=Hallo"
set /a Nr=0
set /a Summe=0
set /a Produkt=1
:Loop
set "Char=!Text:~%Nr%,1!"
if "%Char%"=="" goto :Weiter
set /a Summe+=!%Char%!
set /a Produkt*=!%Char%!
set /a Nr+=1
goto :Loop
:Weiter
set /a Halb=Summe/2
set /a Ergebnis=Produkt/Summe
set /a Rest=Produkt%%Summe
if %Rest% geq %Halb% set /a Ergebnis+=1
echo %Ergebnis%
Grüße
bastla