Inhalt aus Text-Datei in Variablen schreiben mit batch
Hallo,
ich habe eine Textdatei, die wie folgt aufgebaut ist
name;definition
name;definition
name;definiton
da ich diese datei über ein batch skript erstelle, kann sie beliebig lang sein.
Jetzt würde ich gern für jede in der Datei vorhandene Zeile eine Datei Anlegen, die 2 Variablen enthält.
die erste Variable soll den Namen beinhalten, die zweite die Definiton.
habe schon sämtliche Foren durchsucht aber nichts gefunden was mir da weiterhilft
kann mir da jemand helfen?
ich habe eine Textdatei, die wie folgt aufgebaut ist
name;definition
name;definition
name;definiton
da ich diese datei über ein batch skript erstelle, kann sie beliebig lang sein.
Jetzt würde ich gern für jede in der Datei vorhandene Zeile eine Datei Anlegen, die 2 Variablen enthält.
die erste Variable soll den Namen beinhalten, die zweite die Definiton.
habe schon sämtliche Foren durchsucht aber nichts gefunden was mir da weiterhilft
kann mir da jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220866
Url: https://administrator.de/forum/inhalt-aus-text-datei-in-variablen-schreiben-mit-batch-220866.html
Ausgedruckt am: 16.04.2025 um 22:04 Uhr
13 Kommentare
Neuester Kommentar
Hallo chrisb87,
einfache FOR-Schleife sollte doch genügen:
In
Grüße Uwe
einfache FOR-Schleife sollte doch genügen:
@echo off & setlocal ENABLEDELAYEDEXPANSION
set cnt=1
for /f "usebackq tokens=1,2* delims=;" %%a in ("C:\Quelldatei.txt") do @(
echo Name:%%a Definition:%%b>>neuedatei_!cnt!.txt
set /a cnt+=1
)
%%a
ist jeweils der Name und in %%b
die Definition jeder Zeile enthalten.Grüße Uwe
dann hast du das
nicht mit eingebaut
setlocal ENABLEDELAYEDEXPANSION
oh jee, schmeiß den Code am besten ganz schnell weg, da sind zu viele Fehler drin. Erstens erzeugst du die Counter-Variable erst nach dem eigentlichen Verwenden und dann verwendest du Prozentzeichen in der FOR-Schleife um den Counter auszugeben. Du hast das Prinzip des Delayed Expansion noch nicht verstanden. Und in der FOR-Schleife hast du auch die tokens Parameter verändert...
so sollte das bei dir aussehen
und bitte benutze in Zukunft die Code-Tags hier im Forum um deinen Code zu formatieren, ansonsten gehen Sonderzeichen verloren.Danke.
Grüße Uwe
so sollte das bei dir aussehen
setlocal ENABLEDELAYEDEXPANSION
set /a counter=1
SET "FIND1=G:\Ausgabe\conf1_%LAND%_"
for /f "usebackq tokens=1,2* delims=;" %%a in ("%OUTPUT%") do @(
echo set VAR1=%LAND%>"%FIND1%!counter!.txt"
echo set VAR2=%%a>>"%FIND1%!counter!.txt"
echo set VAR3=%%b>>"%FIND1%!counter!.txt"
set /a counter+=1
)
und bitte benutze in Zukunft die Code-Tags hier im Forum um deinen Code zu formatieren, ansonsten gehen Sonderzeichen verloren.Danke.
Grüße Uwe
wenn du meinen Code so wie er war übernommen hast darf dies eigentlich nicht sein. Wenn nicht, hast du sehr wahrscheinlich zwischen der Variablen und der Ausgabeumleitung ein Leerzeichen eingefügt:
So ist ein Leerzeichen hinter der Variablen in der Ausgabedatei
und so nicht:
Was auch noch sein kann ist das deine Quelldatei Leerzeichen zwischen den Semikolons hat. Wenn das der Fall ist muss man diese noch folgendermaßen eliminieren
Dabei dürfen dann aber weder Name noch Definition ein Leerzeichen enthalten, diese werden dann sonst auch entfernt)
Grüße Uwe
So ist ein Leerzeichen hinter der Variablen in der Ausgabedatei
echo set VAR2=%%a >>"%FIND1%!counter!.txt"
echo set VAR2=%%a>>"%FIND1%!counter!.txt"
set name=%%a
set name=!name: =!
set definition=%%b
set definition=!definition: =!
echo set VAR1=!name!>>"%pfad%!cnt!.txt"
echo set VAR2=!definition!>>"%pfad%!cnt!.txt"
set /a cnt+=1
Grüße Uwe