Batch: mehrere Zeilen (Blöcke) in einer txt Datei zu einer Variablen hinzufügen
Guten Abend zusammen!
Bin neu hier und habe hier im Forum gesehen, dass sich einige gut in der batch auskennen.
Habe schon mehrere Tage im Internet bzw auch hier im Forum nach einer Lösung gesucht, aber noch nichts passendes gefunden.
Mein Problem:
Ich habe eine Text Datei die so aussieht:
slot: 0
name: hitachi
size: 300 GB
slot: 1
name: hitachi
size: 600 GB
slot: 2
name: hitachi
size: 900 GB
usw.
daraus möchte ich immer jeweils 3 zeilen zu einer Variablen hinzufügen:
var1:
slot: 0
name: hitachi
size: 300 GB
var2:
slot: 1
name: hitachi
size: 600 GB
var3:
slot: 2
name: hitachi
size: 900 GB
habe bisher immer nur Lösungen gefunden, die mir entweder 1 bestimmte Zeile in eine Variable schreiben oder gleich alles
Vielen Dank im voraus
lg Sebastian
Bin neu hier und habe hier im Forum gesehen, dass sich einige gut in der batch auskennen.
Habe schon mehrere Tage im Internet bzw auch hier im Forum nach einer Lösung gesucht, aber noch nichts passendes gefunden.
Mein Problem:
Ich habe eine Text Datei die so aussieht:
slot: 0
name: hitachi
size: 300 GB
slot: 1
name: hitachi
size: 600 GB
slot: 2
name: hitachi
size: 900 GB
usw.
daraus möchte ich immer jeweils 3 zeilen zu einer Variablen hinzufügen:
var1:
slot: 0
name: hitachi
size: 300 GB
var2:
slot: 1
name: hitachi
size: 600 GB
var3:
slot: 2
name: hitachi
size: 900 GB
habe bisher immer nur Lösungen gefunden, die mir entweder 1 bestimmte Zeile in eine Variable schreiben oder gleich alles
Vielen Dank im voraus
lg Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257930
Url: https://administrator.de/forum/batch-mehrere-zeilen-bloecke-in-einer-txt-datei-zu-einer-variablen-hinzufuegen-257930.html
Ausgedruckt am: 20.04.2025 um 18:04 Uhr
9 Kommentare
Neuester Kommentar
Hallo Sebastian,
in Batchscript ist es schwierig, einer Variablen zur Laufzeit Zeilenumbrüche hinzuzufügen. Es wäre interessant zu wissen, wie Du die Daten aus der Textdatei weiterverarbeiten möchtest und wie viele solcher Datensätze die Textdatei enthalten kann. Evtl. kann man sich dann eine andere Strategie zur Zwischenspeicherung der Daten überlegen.
Gruss
Friemler
in Batchscript ist es schwierig, einer Variablen zur Laufzeit Zeilenumbrüche hinzuzufügen. Es wäre interessant zu wissen, wie Du die Daten aus der Textdatei weiterverarbeiten möchtest und wie viele solcher Datensätze die Textdatei enthalten kann. Evtl. kann man sich dann eine andere Strategie zur Zwischenspeicherung der Daten überlegen.
Gruss
Friemler
Hallo Sebastian,
das könnte so gehen:
In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.
Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen
In Zeile 18 werden alle Variablen ausgegeben, deren Name mit
Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable
Gruß
Friemler
das könnte so gehen:
@echo off & setlocal enabledelayedexpansion
set "InFile=In.txt"
set "DatasetSize=3"
set /a Cnt=0
set /a Step=0
set /a Idx=0
for /f "usebackq delims=" %%l in ("%InFile%") do (
set /a Step=Cnt %% DatasetSize
if !Step! equ 0 set /a Idx+=1
call :ExtendVar "Var!Idx!" "%%l"
set /a Cnt+=1
)
set "VarName="
set Var
exit /b
:ExtendVar
set "VarName=%~1"
set "AddValue=%~2"
call set "CurValue=%%%VarName%%%"
if "%CurValue%" equ "" (
call set "%%VarName%%=%AddValue%"
) else (
call set "%%VarName%%=%%%VarName%%% %AddValue%"
)
exit /b
In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.
Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen
VarX
, wobei X
für die 1-basierte Nummer des Datensatzes steht. Der fixe Namensbestandteil kann in Zeile 13 geändert werden, indem bei "Var!Idx!"
das Var
durch etwas anderes ersetzt wird.In Zeile 18 werden alle Variablen ausgegeben, deren Name mit
Var
anfängt. Damit kann der erfolgreiche Abschluss des Scripts überprüft werden. Wenn die o.g. Änderung in Zeile 13 durchgeführt wurde, muss Zeile 18 entsprechend angepasst werden.Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable
VarName
(fängt auch mit Var
an) ausgegeben wird, wird sie in Zeile 17 gelöscht.Gruß
Friemler
Hallo Sebastian,
Gruß
Friemler
Gruß
Friemler
Hallo Sebastian,
hier nochmal der Begleittext zum Script, dort steht alles wesentliche:
Gruß
Friemler
hier nochmal der Begleittext zum Script, dort steht alles wesentliche:
Zitat von @Friemler:
In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.
Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen
Datensatzes steht. Der fixe Namensbestandteil kann in Zeile 13 geändert werden, indem bei
In Zeile 18 werden alle Variablen ausgegeben, deren Name mit
Scripts überprüft werden. Wenn die o.g. Änderung in Zeile 13 durchgeführt wurde, muss Zeile 18 entsprechend
angepasst werden.
Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable
In Zeile 3 muss der Pfad zur Eingabedatei eingetragen werden, in Zeile 4 die Länge (in Zeilen) eines Datensatzes.
Das Script erzeugt für jeden Datensatz eine Variable mit dem Namen
VarX
, wobei X
für die 1-basierte Nummer desDatensatzes steht. Der fixe Namensbestandteil kann in Zeile 13 geändert werden, indem bei
"Var!Idx!"
dasVar
durch etwas anderes ersetzt wird.In Zeile 18 werden alle Variablen ausgegeben, deren Name mit
Var
anfängt. Damit kann der erfolgreiche Abschluss desScripts überprüft werden. Wenn die o.g. Änderung in Zeile 13 durchgeführt wurde, muss Zeile 18 entsprechend
angepasst werden.
Damit bei der abschließenden Ausgabe der erzeugten Variablen nicht auch die während des Scriptlaufs benutzte Variable
VarName
(fängt auch mit Var
an) ausgegeben wird, wird sie in Zeile 17 gelöscht.Gruß
Friemler