acjoker
Goto Top

Stringanipulation innerhalb einer FOR F Schleife

Hallo,


ich würde gerne innerhalb einer FOR / F Schleife eine Variable (z.B. GKxxxxxxxxxx) "beschneiden", so das ich nur noch die ersten beiden Zeichen habe.

Normalerweise geht das ja wie folgt

set x=GKxxxxxx
set x=%x:~0,2%
echo %x%

Ausgabe
"GK"

In einer FOR / F Loop spreche ich die Variable die aus der Loop gebildet wird aber mit %%x an.
Und um danach die neue oder angepasste Variable innerhalb der Loop zu verwenden nutze ich !x!.


Es klappt aber leider nicht mit

FOR /F %%x in (.......) do (
set x=%%x:~0,2%
echo !x!
)

Wo liegt hier mein Fehler?
Bei der Platzierung der % bin ich mir auch nicht sicher und habe z.B. auch set x=%%x:~0,2 versucht, leider ohne Erfolg.

Gibt es eine anderen Weg aus einer x=GKxxxxxx die ersten beiden Zeichen zu extrahieren?


Danke und beste Grüße
Joker

Content-Key: 360588

Url: https://administrator.de/contentid/360588

Printed on: April 25, 2024 at 10:04 o'clock

Member: colinardo
Solution colinardo Jan 10, 2018 updated at 16:28:07 (UTC)
Goto Top
Servus Joker,
erstens fehlt dir hier das Statement setlocal enabledelayedexpansion und du musst in der Schleife die Variable erst mal einer neuen zuweisen denn Stringmanipulationen mit der Schleifenvariable %%x funktionieren nicht
@echo off &setlocal ENABLEDELAYEDEXPANSION
FOR /F %%x in (.......) do (
    set "var=%%x"  
    set "var=!var:~0,2!"  
    echo(!var!
)
Alternativ auch immer mit call set wenn z.B. Schleifenvariablen ineinander geschachtelt werden müssen
@echo off &setlocal ENABLEDELAYEDEXPANSION
for /f %%x in (.......) DO (
	set "var=%%x"  
	call set "var=%%var:~0,2%%"  
	echo(!var!
)
Ich empfehle dir folgendes Tutorial zur FOR-Schleife al eingehend zu lesen:
Tutorial zur FOR-Schleife
Und https://ss64.com/nt/delayedexpansion.html
Dann sollten keine Fragen mehr offen sein.

Grüße Uwe
Member: AcJoker
AcJoker Jan 10, 2018 at 20:05:00 (UTC)
Goto Top
Danke, das war die Lösung.

Den ersten Link kannte ich bereits. Vor der Frage habe ich schon versucht das Problem selber zu lösen. Natürlich habe ich nicht alle Ansätze hier aufgeführt.
Mir fällt es aber leider noch schwer diese, meiner Meinung nach Feinheiten, zu finden

Die erste Zeile hatte mein Code, leider habe ich vergessen ihn hier zu posten. Sorry,

Gruß
Joker