84544
Goto Top

Foreach in Batch umsetzen

Hallo,

gibt es eine Möglichkeit mit Batch eine foreach-Schleife umzusetzen?

Die foreach soll dann aus einer Datei xyz.txt Werte auslesen

Inhalt:
46723456,835462,2567889,22346787,1678895, usw.

Die Anzahl der Werte ist UNbestimmt.

Möglich wäre natürlich.

:schleife
set tok=1
for /f "tokens=%tok% delims=," %%g in ('xyz.txt') do set var=%%g
das was mit der Variable passieren soll.......
z.B.
echo %var% >> abc.txt
if %var%=="" goto ende
set /a tok=%tok%+1
goto schleife

:ende
exit

Aber mir kommt das zu umständlich vor.

Das müsste man doch irgendwie einfacher machen können.

Ich bedanke mich schonmal im Varraus für eure Hilfe^^

Content-Key: 133596

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

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 60730
60730 Jan 15, 2010 at 20:22:39 (UTC)
Goto Top
Zitat von @84544:
Hallo,

gibt es eine Möglichkeit mit Batch eine foreach-Schleife umzusetzen?
Die Anzahl der Werte ist UNbestimmt.
Ich bedanke mich schonmal im Varraus für eure Hilfe^^

gib doch mal for /? im Befehlsinterpreter deiner Wahl ein.
weder den Zähler, noch die Sprungmarke :schleife braucht man.

Und das wäre doch auch witzlos, wenn man zuerst wissen müßte, wieviele Treffer in einer Datei wären, um die mit einer For Schleife auszuwerten.

Gruß
Mitglied: 84544
84544 Jan 15, 2010 at 20:29:23 (UTC)
Goto Top
das hätte ich ja theoretisch durch if %var%=="" goto ende gelöst

PS: gib mir mal ein tipp wo ich in der for hilfe suchen soll.... hab da nichts wirklich gutes gefunden
Member: bastla
bastla Jan 15, 2010 at 21:01:29 (UTC)
Goto Top
Hallo marci3xXx!

Ist vielleicht wirklich nicht ganz einfach herauszulesen ...

Versuch es damit:
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do >>abc.txt echo %%i
Soferne Du noch mehr mit den eingelesenen Werten vorhast (und diese daher tatsächlich jeweils einer Variablen zuweisen möchtest), kommt es darauf an, ob es in den Daten ein "!" gibt oder nicht - in ersterem Falle etwa so:
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do (  
    set "var=%%i"  
    echo !var!
)
Für den Fall 2:
@echo off & setlocal
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do set "var=%%i" & call :ProcessValue  
goto :eof

:ProcessValue
echo %var%
goto :eof
Grüße
bastla
Mitglied: 84544
84544 Jan 15, 2010 at 21:14:19 (UTC)
Goto Top
ok danke ich glaub damit kann ich was anfangen face-smile

eigentlich habe ich mit der variable ne ganze menge vor^^ wieviele befehle/zeilen kann ich denn in "do (.........)" anbringen? hatte mal irgendwie probleme nach 8 stück oder so.... oder kann ich das dann unter ":processvalue" alles schreiben?
Member: bastla
bastla Jan 15, 2010 at 21:19:54 (UTC)
Goto Top
Hallo Marci3xXx!

Ob es tatsächlich eine Beschränkung gibt, wird uns vermutlich Biber sagen können - mir ist dazu nix bekannt ...

Wenn Du die Unterprogrammvariante wählst, beginnt bei ":ProcessValue" ein zusätzlicher Batch in einer neuen Instanz - da wirst Du auf jeden Fall genug Platz haben.

Grüße
bastla
Mitglied: 84544
84544 Jan 15, 2010 at 22:29:50 (UTC)
Goto Top
vielen dank das hat mir richtig weitergeholfen face-smileface-smileface-smile