Zeichenkette ohne Trennzeichen per FOR-Schleife in einzelne Zeichen zerlegen
Hallo,
trotz intensiver Suche und zahlreichen Versuchen, habe ich bisher keine Lösung für mein (triviales?) Problem finden können, evtl. habt ihr ja einen Tipp für mich.
In einem Batch-Programm soll eine Zeichenkette (6-12 Ziffern) mittels FOR-Schleife in ihre einzelnen Zeichen zerlegt werden, so dass die Zählvariable in jedem Durchlauf mit dem nächsten Zeichen belegt ist (Reihenfolge vorwärts/rückwärts ist egal). Die Ziffern sind allerdings nicht mit einem Trennzeichen voneinander separiert.
Vereinfacht sähe der Aufruf etwa so aus:
Als Ausgabe erwarte ich
erhalte jedoch
Eine Lösung mit GOTO habe ich bereits, aber die ist wenig elegant und deutlich länger.
Vielen Dank und viele Grüße
RaSi
trotz intensiver Suche und zahlreichen Versuchen, habe ich bisher keine Lösung für mein (triviales?) Problem finden können, evtl. habt ihr ja einen Tipp für mich.
In einem Batch-Programm soll eine Zeichenkette (6-12 Ziffern) mittels FOR-Schleife in ihre einzelnen Zeichen zerlegt werden, so dass die Zählvariable in jedem Durchlauf mit dem nächsten Zeichen belegt ist (Reihenfolge vorwärts/rückwärts ist egal). Die Ziffern sind allerdings nicht mit einem Trennzeichen voneinander separiert.
Vereinfacht sähe der Aufruf etwa so aus:
for /F %%i in ("123456") do echo %%i
Als Ausgabe erwarte ich
1
2
3
4
5
6
erhalte jedoch
123456
Eine Lösung mit GOTO habe ich bereits, aber die ist wenig elegant und deutlich länger.
Vielen Dank und viele Grüße
RaSi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284608
Url: https://administrator.de/contentid/284608
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo RaSi76, Willkommen auf Administrator.de!
Kannst du so machen:
oder auch so
Grüße Uwe
Kannst du so machen:
@echo off & setlocal enabledelayedexpansion
REM Unsere Variable
set "var=1234567890"
REM Länge der Variablen ermitteln
call :strLength strLen "%var%"
set /a strLen-=1
REM Ausgabe der einzelnen Zeichen der Variablen
for /L %%a in (0 1 %strLen%) do @(
echo !var:~%%a,1!
)
goto :eof
REM Makro zum ermitteln der Länge einer Variablen
:strLength
set "#=%~2"
set length=0
:stringLengthLoop
if defined # (set #=%#:~1%&set /A length += 1&goto stringLengthLoop)
set "%~1=%length%"
goto :eof
@echo off & setlocal enabledelayedexpansion
set "var=1234567890"
for /L %%a in (0 1 2000) do @(
set "char=!var:~%%a,1!"
if not "!char!" == "" (echo !char!) else (goto end)
)
:end
Hallo RaSi,
so einfach ist das nicht. Frei nach @pieh-ejdsch 's Batch Stringlänge bestimmen:
Grüße
rubberman
so einfach ist das nicht. Frei nach @pieh-ejdsch 's Batch Stringlänge bestimmen:
@echo off &setlocal
set "str=;^1234<>|!$%%&/()=?""
for /f delims^=^ eol^= %%i in (
'cmd /u /von /c "echo(!str!"^|find /v ""'
) do echo %%i
pause
rubberman
Hey,
hier gibts eine ausführliche Betrachtung der verschiedenen StringLength-Funktionen von Dave Benham
Gruß, Endoro
hier gibts eine ausführliche Betrachtung der verschiedenen StringLength-Funktionen von Dave Benham
Gruß, Endoro