Variablen außerhalb einer For Schleife abfragen
Hallo miteinander,
ich habe ein Problem, bei dem ich überhaupt nicht weiter komme.
Ich möche ein kleine Batchdatei erstellen, mit der ich aus einer csv-Datei alle Werte auslese und diese in Variable speichere. Soweit funktioniert das eigentlich schon, aber die Variablen sind nur innerhalb der For Schleife abrufbar.
So sieht mein jetztiger Code aus:
Innerhalb der For Schleife werden die tatsächlichen Werte, die in der CSV gespeichert sind, ausgegeben. Nicht so außerhalb der For Schleife. Das will ich aber
Kann man das irgendwie realisieren?
Vielen Dank
Michael
CSVDatei sieht ungefähr so aus.
Beschreibung;Beschreibung2;Beschreibung3;Beschreibung4
Wert 1;Wert 2;Wert 3;Wert 4
Wert 5;Wert 6;Wert 7;Wert 8
ich habe ein Problem, bei dem ich überhaupt nicht weiter komme.
Ich möche ein kleine Batchdatei erstellen, mit der ich aus einer csv-Datei alle Werte auslese und diese in Variable speichere. Soweit funktioniert das eigentlich schon, aber die Variablen sind nur innerhalb der For Schleife abrufbar.
So sieht mein jetztiger Code aus:
for /f "skip=1 tokens=1-4 delims=;" %%A in (%CSVFILE%) do (
Set Var%x%=%%A
echo !Var%x%!
Set /a x=%x%+1
Set Var%x%=%%B
echo !Var%x%!
Set /a x=%x%+1
Set Var%x%=%%C
echo !Var%x%!
Set /a x=%x%+1
Set Var%x%=%%D
echo !Var%x%!
set /a x=%x%+4
)
echo %x%
:: Hier wird 4 ausgegeben
echo Var%x%
:: Hier wird Var4 statt der Variableninhalt von Var4 ausgegeben
pause
Innerhalb der For Schleife werden die tatsächlichen Werte, die in der CSV gespeichert sind, ausgegeben. Nicht so außerhalb der For Schleife. Das will ich aber
Kann man das irgendwie realisieren?
Vielen Dank
Michael
CSVDatei sieht ungefähr so aus.
Beschreibung;Beschreibung2;Beschreibung3;Beschreibung4
Wert 1;Wert 2;Wert 3;Wert 4
Wert 5;Wert 6;Wert 7;Wert 8
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 279111
Url: https://administrator.de/contentid/279111
Ausgedruckt am: 24.11.2024 um 19:11 Uhr
3 Kommentare
Neuester Kommentar
Hey,
die Variable "
Gruß, Endoro
die Variable "
Var4
" wird nur erzeugt, wenn du "x
" entsprechend initialisierst, "set /a x=1
". Dann wirst du feststellen, dass "x
" nach Beendigung der for
-Schleife den Wert "5" hat. Um zu sehen, welche Variablen tatsächlich entstanden sind, füge "set var
" vor "pause
" in dein Skript ein.Gruß, Endoro
Moin Michael-24,
ich glaube, du meinst es eher so:
Auf diese Weise ürde ich quasi ein 2-dimensionales Variablen-Array nachbilden, wobei dann #2_D dann denn Wert von Satz 2, Feld D bedeuten.
Also ähnlich wie die Zeilen/Spaltenüberschriften aus Excel oder Calc.
Wobei ich aber nicht wüsste, was ich mit dem dritten Wert aus Zeile 2075 denn in einer Variablen #2075_C anfangen soll - also der Sinn dieses In-Variablen-Packen ist mir nicht klar.
Wenn ich das laufen lasse (inkl. der beiden Debug-Ausgaben "Hier wird alles ausgegeben...") , dann erhalte ich am CMD-Prompt:
Grüße
Biber
ich glaube, du meinst es eher so:
@echo off & setlocal enabledelayedexpansion
set "csvfile=d:\bitte\anpassen\@michael-24\testcsvfile.csv"
set /a rec=0
for /f "usebackq skip=1 tokens=1-4 delims=;" %%A in ("%CSVFILE%") do (
set /a rec+=1
Set #!rec!_A=%%A
Set #!rec!_B=%%B
Set #!rec!_C=%%C
Set #!rec!_D=%%D
)
echo Hier wird alles, was #* heisst ausgegeben
set #
:: Hier wird alles, was var* heisst ausgegeben
pause
set rec-=1
:: Hier wird alles, was #* heisst in einer FOR /L-Anweisung ausgegeben
For /L %%i in (1, 1, %rec%) do (
echo Rec #%%i: !#%%i_A!;!#%%i_D!;!#%%i_C!;!#%%i_D!
)
pause
Auf diese Weise ürde ich quasi ein 2-dimensionales Variablen-Array nachbilden, wobei dann #2_D dann denn Wert von Satz 2, Feld D bedeuten.
Also ähnlich wie die Zeilen/Spaltenüberschriften aus Excel oder Calc.
Wobei ich aber nicht wüsste, was ich mit dem dritten Wert aus Zeile 2075 denn in einer Variablen #2075_C anfangen soll - also der Sinn dieses In-Variablen-Packen ist mir nicht klar.
Wenn ich das laufen lasse (inkl. der beiden Debug-Ausgaben "Hier wird alles ausgegeben...") , dann erhalte ich am CMD-Prompt:
Hier wird alles, was #* heisst ausgegeben
#1_A=Wert 1
#1_B=Wert 2
#1_C=Wert 3
#1_D=Wert 4
#2_A=Wert 5
#2_B=Wert 6
#2_C=Wert 7
#2_D=Wert 8
Drücken Sie eine beliebige Taste . . .
Rec #1: Wert 1;Wert 4;Wert 3;Wert 4
Rec #2: Wert 5;Wert 8;Wert 7;Wert 8
Grüße
Biber