[gelöst] Batch - Anzahl der Buchstaben in einer Zeichenkette

Palladin007

assimiliert
Ich habe auf folgender Seite:
administrator.de
folgenden Code gefunden:

Code:
@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%

Ein gewisser bastla hat ihn geschrieben^^
Wenn das tatsächlich der selbe bastla ist, wie hier, fände ich es toll, wenn du mir den Code erklären könntest.

Die meisten Dinge verstehe ich, aber speziell mit der Befehls-Erweiterung habe ich noch nicht so viel Erfahrung.

Und das ist der Grund, warum ich das nicht verstehe^^

Ich hoffe dann daraus lernen zu können und es auch in meinem derzeitigen Projekt verbauen zu können.


Ich freue mich aber auch über jede andere Erklärung^^

Gruß
Palladin007


Edit:
Wenn es jemandem missfällt, dass ich hier die Arbeit abschiebe und es mir mundgerecht auftischen lassen will:
Ich versuche es gerade selber zu erklären. Hab mich auch nochmal die Hilfe bei cmd durch gelesen, und auch fast alles sofort verstanden, aber das Programm oben macht mir noch Probleme beim Verständnis.

Und ich muss auch jedes einzelne Zeichen kapieren, da ich einzelne Inhalte daraus nutzen will, denn das ganze Programm nützt mir nichts.
 
Zuletzt bearbeitet:
Ok, ich glaube, so laaaangsam blick ich ein paar Zeichen mehr^^
Ich versuch mal selber so viel zu erklären, wie ich schaffe, und ihr sagt mir, was ich falsch gemacht habe^^

Also, der Anfang ist ja klar.
setlocal enabledelayedexpansion soll wahrscheinlich die verzögerte Erweiterung von Variablen aktivieren. Oder auch die Befehlserweiterung.
Dann werden die Buchstaben, der Text und die drei Variablen fest gelegt.

Alles hinter der Sprungmarke :Weiter ist auch klar.
Rechenoperationen und der Vergleich zweier Variablen.


Zwischen :Loop und goto Loob:

Diese Zeile Versteh ich nicht:
set "Char=!Text:~%Nr%,1!"
Ich versteh zwar halbwegs die Komponenten, aus denen sie aufgebaut ist (Ausrufezeichen, etc.), aber in der Kombination weis ich nicht weiter.

Text:~%Nr%,1 bedeutet, dass nur ein Zeichen ab dem Zeichen nach %Nr% verwendet wird.
Die Ausrufezeichen bedeuten, dass die Variable "zur Laufzweit" erweitert werden kann. SChwer mit eigenen Worten zu erklären, aber ich denke, dass ich weis, was das bedeutet.

Wenn das alles stimmt, werden auch halbwegs die weiteren Zeilen klar.
 
Ok, jetzt bin ich endlich zu dem da gekommen:

Code:
set /p word=
set Nr=0
:Loop
set "Char=!word:~%Nr%,1!"
if "%Char%"=="" goto :loop1
set /a Nr+=1
goto :Loop
:loop1
set /a nr+=1
echo %nr%
pause

Das war es, was ich eigentlich brauchte.
Die Anzahl der geschriebenen Zeichen.

Und das ich damit auch alle Zeichen einzeln abspeichern kann, ist nur noch umso besser^^
 
Oben