Batch: Beim einlesen einer semikolongetrennten Zeichenkette werden leere Strings übergangen
Hallo zusammen,
ich möchte eine Textdatei mit mehreren semikolongetrennten Zeilen einlesen und in generisch erzeugte Variablen (~Array) schreiben.
Inhalt der Text.txt
R1C1;;R1C3;R1C4;
R2C1;R2C2;R2C3;R2C4;
R3C1;R3C2;R3C3;R3C4;
R4C1;R4C2;R4C3;R4C4;
Die Funktion "ArrCells.bat" (siehe unten) wird von einer anderen .bat (Test.bat). An und für sich klappt das ganz gut. Nur leider werden ;; übersprungen.
Ergebnis der ersten Zeile:
R1C1= R1C1
R1C2= R1C3
R1C3= R1C4
R1C4=
Die Spalten verschieben sich also nach hinten. Der Fehler liegt in der 2. Schleife (for /F "tokens=%nCol% delims=;" %%i in ("%line%") do). Hier wird bereits das ;; übersprungen.
Ideen?
Vielen Dank!
Aufruf in Test.bat:
Funktion in ArrCells.bat
ich möchte eine Textdatei mit mehreren semikolongetrennten Zeilen einlesen und in generisch erzeugte Variablen (~Array) schreiben.
Inhalt der Text.txt
R1C1;;R1C3;R1C4;
R2C1;R2C2;R2C3;R2C4;
R3C1;R3C2;R3C3;R3C4;
R4C1;R4C2;R4C3;R4C4;
Die Funktion "ArrCells.bat" (siehe unten) wird von einer anderen .bat (Test.bat). An und für sich klappt das ganz gut. Nur leider werden ;; übersprungen.
Ergebnis der ersten Zeile:
R1C1= R1C1
R1C2= R1C3
R1C3= R1C4
R1C4=
Die Spalten verschieben sich also nach hinten. Der Fehler liegt in der 2. Schleife (for /F "tokens=%nCol% delims=;" %%i in ("%line%") do). Hier wird bereits das ;; übersprungen.
Ideen?
Vielen Dank!
Aufruf in Test.bat:
@echo off & setlocal
Setlocal EnableDelayedExpansion
CALL ArrCells.bat Line "Text.txt"
REM Bsp. Zählschleife Line
FOR /L %%i IN (1, 1, 4) DO (
FOR /L %%j IN (1, 1, 4) DO (
ECHO R%%iC%%j !Line[%%i][%%j]!
)
)
PAUSE
Funktion in ArrCells.bat
SET prefix=%1
REM das ~ignoriert einschließende "" (schneidet sie ab)
SET sFile=%~2
SET nRow=0
FOR /F "usebackq delims=" %%a in ("%sFile%") DO (
SET /a nRow+=1
SET "line=%%a"
CALL :ColsIni
)
:ColsIni
set nCol=1
:Cols
for /F "tokens=%nCol% delims=;" %%i in ("%line%") do (
SET "Wert=%%i"
SET "%prefix%[%nRow%][%nCol%]=!Wert!"
SET /a nCol+=1
goto :Cols
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 327330
Url: https://administrator.de/forum/batch-beim-einlesen-einer-semikolongetrennten-zeichenkette-werden-leere-strings-uebergangen-327330.html
Ausgedruckt am: 21.04.2025 um 20:04 Uhr
1 Kommentar
Batch ist keine geeignete Sprache um CSV zu parsen. Für diverse Workarounds siehe
http://www.dostips.com/forum/viewtopic.php?f=3&t=7659
Grüße
rubberman
http://www.dostips.com/forum/viewtopic.php?f=3&t=7659
Grüße
rubberman