bei for f delims-x werden for-befehle nur 1x ausgefuert?!?
ein einfaches for /f "delims=," %%i in ("%var%") do echo %var%
geht nicht... was mache ich falsch?
Guten Tag miteinander,
ich habe ein Problem das für mich, auch wenn ich mich mit for noch nicht soo gut auskenne, als einzige logische Erklärung ein Bug sein kann (auch dann bitte Lösungsvorschläge
Ich gehe der Einfachheit halber mal von der Beschreibung des for-Befehls aus:
nun soll das ganze so aussehen:
doch es wird nur ein echo ausgeführt, wenn auch dieses richtig. Was ist denn bitte an diesem simplen code falsch?
Ich weiß mir wirklich keinen Rat mehr und verzweifle noch daran X(
Also: HILFE!
ach ja hier noch meine Ausgabe (Zitat):
E:\Desktop>SETLOCAL EnableDelayedExpansion
E:\Desktop>set "option=1,2,3"
E:\Desktop>for /F "delims=," %i in ("1,2,3") do echo %i
E:\Desktop>echo 1
1
E:\Desktop>pause
Drücken Sie eine beliebige Taste . . .
(Zitat ende)
MfG, halo7one
geht nicht... was mache ich falsch?
Guten Tag miteinander,
ich habe ein Problem das für mich, auch wenn ich mich mit for noch nicht soo gut auskenne, als einzige logische Erklärung ein Bug sein kann (auch dann bitte Lösungsvorschläge
Ich gehe der Einfachheit halber mal von der Beschreibung des for-Befehls aus:
FOR /F ["Optionen"] %Variable IN ("Zeichenkette") DO Befehl [Parameter]
nun soll das ganze so aussehen:
SETLOCAL EnableDelayedExpansion
set "option=1,2,3"
for /f "delims=," %%i in ("%option%") do echo %%i
pause
Ich weiß mir wirklich keinen Rat mehr und verzweifle noch daran X(
Also: HILFE!
ach ja hier noch meine Ausgabe (Zitat):
E:\Desktop>SETLOCAL EnableDelayedExpansion
E:\Desktop>set "option=1,2,3"
E:\Desktop>for /F "delims=," %i in ("1,2,3") do echo %i
E:\Desktop>echo 1
1
E:\Desktop>pause
Drücken Sie eine beliebige Taste . . .
(Zitat ende)
MfG, halo7one
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 89457
Url: https://administrator.de/contentid/89457
Ausgedruckt am: 20.11.2024 um 04:11 Uhr
10 Kommentare
Neuester Kommentar
Das ist kein bug das stimmt so.
Du hast eine Zeichenkette die "1,2,3" lautet.
Diese teilst du in einzelne Teile auf, die durch ein "," getrennt sind. Der erste Teil steht in dem %%i dann.
Was du denke ich möchtest würdest du hiermit erreichen:
miniversum
Du hast eine Zeichenkette die "1,2,3" lautet.
Diese teilst du in einzelne Teile auf, die durch ein "," getrennt sind. Der erste Teil steht in dem %%i dann.
Was du denke ich möchtest würdest du hiermit erreichen:
SETLOCAL EnableDelayedExpansion
set "option=1 2 3"
for %%i in (%option%) do echo %%i
pause
miniversum
@miniversum
Nur als Anmerkung: Deine Variante würde auch mit
funktionieren ...
Grüße
bastla
Nur als Anmerkung: Deine Variante würde auch mit
set "option=1,2,3"
Grüße
bastla
Mit delims gebe ich also nur die Trennzeichen an, falls ich den Zeichensatz in mehrere Tokens unterteilen will, oder wie?
Ja genau.Delims sagt was das Trennzeichen ist udn mit tokens kanst du angeben welche Teile in den Variabeln stehen. Würdest du also z.B. tokens="2,3" angeben würde in %%i 2 und in %%j 3 stehen.
Was meinst du mit Platzhalter?
Nur des Interesses halber: kann man denn auch jedes Zeichen eines Satzes (z.B. "123") einzeln auswerten lassen, ein "," einfügen oder ähnliches was diesen Zweck erfüllen würde?
Du meinst sowas?
SETLOCAL EnableDelayedExpansion
set "option=123"
:loop
if "%option%" equ "" goto:loopende
echo %option:~0,1%
set "option=%option:~1%
goto:loop
:loopende
pause
Moin halo7one,
ich versuch mal eine Begriffsklärung anhand der Hilfe, die Du am CMD-Prompt zum FOR-Befehl aufrufen kannst:
Was Du mit "Platzhalter" meintest, sind die "Trennzeichen", auf neudeutsch "Delimiter" oder in flapsigen Redmonder Jargon halt "delims".
Wenn die Werte (oder besser. die Token) durch Leerzeichen oder TABs getrennt sind, brauchst Du nichts angeben, denn das ist das Standardtrennzeichen.
Grüße
Biber
ich versuch mal eine Begriffsklärung anhand der Hilfe, die Du am CMD-Prompt zum FOR-Befehl aufrufen kannst:
FOR /?
....
....
FOR /F ["Optionen"] %variable IN ('Zeichenkette') DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter]
....
übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise
durch den Parameter "Optionen" überschrieben werden. Das ist eine
Zeichenkette in Anführungszeichen, welche eines oder mehrere Schlüssel-
wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese
Schlüsselwörter sind:
eol=c - Gibt das Zeichen für Zeilenendekommentare an
(nur eins).
skip=n - Gibt die Anzahl der Zeilen an, die am Anfang einer
Datei übersprungen werden.
delims=xxx - Gibt einen Satz von Trennzeichen an. Diese ersetzen
die Standardtrennzeichen TAB und Leerzeichen.
....
Wenn die Werte (oder besser. die Token) durch Leerzeichen oder TABs getrennt sind, brauchst Du nichts angeben, denn das ist das Standardtrennzeichen.
Grüße
Biber
Moin halo7one,
Grüße
Biber
keine Unterteilung in verschiedene Variablen, nur in eine
Das wiederum würde heißen, das es gar keine Delimiter gibt (keine Delimiter->keine einzelnen Token bzw nur eines)>for /f "delims=" %i in ("1,2,3") do @echo %i
1,2,3
## -oder: Delims is mir wurscht, ich will alle Token-
>for /f "tokens=*" %i in ("1,2,3") do @echo %i
1,2,3
## geht auch mit Leerzeichen oder whatever
>for /f "tokens=*" %i in ("1 2 3") do @echo %i
1 2 3
Grüße
Biber