1 Token aus einer TXT auslesen für jede Zeile und als Variable in Schleife nutzen
Die Beschreibung wird schwer was ich vorhabe. Ich versuchs mal zu erklären. Im Vorfeld ein Auszug der Textdatei:
Ich möchte jetzt folgendes tun (exemplarisch)
Sollte der Token richtig sein bekomme ich eine Datei heraus (checkfile.ok), falls nicht dann nicht. Bekomme ich keine Datei soll er weitermachen mit dem ersten Token der 2ten Zeile
Das ganze soll solange weitergehen bis die ganze Datei abgearbeitet ist, oder die Datei existiert. Diese Dateikontrolle per "If exist" in die Schleife zu setzen ist kein Problem, nur weiss ich nicht wie ich so eine komplexe Schleife erstellen soll.
Also:
-Die Schleife soll den ersten Token in jeder Zeile auslesen bis zum Ende der Datei
-Ich muss das eingelesene auch als Variable nutzen können
Falls das möglich ist, vielen Dank im vorraus.
5E6153412EC01B15710F4D249771E416 EP0001-BLES00157_00-HAZEDLC100081450
FA1F3FFE65D9A5D3C680C73C73732BA4 EP0001-BLES00164_00-HAZEDLC100081450
69098A03A94276753714E28E48AF2512 EP0001-BLES00324_00-UBIFC2DLCPACK001
4D928968B0B84A5506458EA6C9CFEE3C EP0001-BLES00389_00-POP0DLCEPILOGUE1
B4F552E1F6BFDD436994A8A4F28C20D9 EP0001-BLES00403_00-PSHAUNWHIT000003
BDA2241506872D1456873DD90671A37B EP0001-BLES00403_00-PSHAUNWHIT000004
7700FF04770842D2C8BC5D9804FEC341 EP0001-BLES00403_00-SWSNOWDLCGEARS01
BD29ED1512C56781D5225D808B213F95 EP0001-BLES00669_00-AC2DLCSEQ1200001
331D9E3459587CC1412AC5A271C70C8D EP0001-BLES00669_00-AC2DLCSEQ13LGS01
E8CF94B46FE2CF67B8A305C2A4EB8F1E EP0001-BLES00669_00-AC2UPLAYTHEME001
0F2E6EB973F894B0271AC346C3732707 EP0001-BLES00909_00-AC2DLC4000000001
Ich möchte jetzt folgendes tun (exemplarisch)
test.exe -FA1F3FFE65D9A5D3C680C73C73732BA4
Sollte der Token richtig sein bekomme ich eine Datei heraus (checkfile.ok), falls nicht dann nicht. Bekomme ich keine Datei soll er weitermachen mit dem ersten Token der 2ten Zeile
test.exe -69098A03A94276753714E28E48AF2512
Das ganze soll solange weitergehen bis die ganze Datei abgearbeitet ist, oder die Datei existiert. Diese Dateikontrolle per "If exist" in die Schleife zu setzen ist kein Problem, nur weiss ich nicht wie ich so eine komplexe Schleife erstellen soll.
Also:
-Die Schleife soll den ersten Token in jeder Zeile auslesen bis zum Ende der Datei
-Ich muss das eingelesene auch als Variable nutzen können
Falls das möglich ist, vielen Dank im vorraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 357588
Url: https://administrator.de/forum/1-token-aus-einer-txt-auslesen-fuer-jede-zeile-und-als-variable-in-schleife-nutzen-357588.html
Ausgedruckt am: 06.01.2025 um 20:01 Uhr
5 Kommentare
Neuester Kommentar
Da reicht ein findstr
Wenn du das Ergbenis weiterverarbeiten willst, in einer For-Schleife aufsplitten
Ich würde mich lieber mal mit was aktuellem wie Powershell beschäftigen als mit diesen Batch-Leichen aus den 80igern ...
findstr /bc:"FA1F3FFE65D9A5D3C680C73C73732BA4 " "C:\datei.txt"
for /f "tokens=1-2" %%a in ('findstr /bc:"FA1F3FFE65D9A5D3C680C73C73732BA4 " "C:\datei.txt" 2^>nul') do
echo Teil1 = %%a
echo Teil2 = %%b
)
Hallo Tim,
irgendwie fehlen mir da die Zusammenhänge. Ist das ganze tiefer verschachtelt (wie deine Einrückung vermuten lässt) und hast du FOR Variable %%A schon in einer der äußeren Schleifen verwendet? Dass du Variablen in Ausrufezeichen den Variableninhalt nicht sofort ausgegeben bekommst, ist in Schleifen normal. Erst wenn das ECHO Kommando tatsächlich ausgeführt wird, siehst du den Inhalt. Ansonsten wird bei eingeschaltetem Prompt (ECHO ON) erst einmal nur die Kommandozeile bzw. der (in Klammern eingefasste) Block von Kommandozeilen angezeigt, der abgearbeitet wird. Das wird bei tief verschachtelten Strukturen schnell unübersichtlich.
Einfaches Beispiel:
Ausgabe:
Der erste Block ist der Prompt der gesamten Schleife, danach erfolgen die Blöcke des Prompts des Schleifenrumpfes für jede Iteration, immer direkt gefolgt von der tatsächlichen ECHO Ausgabe. Wie du siehst, werden Variableninhalte auch im Prompt zum Wert aufgelöst, wenn sie in Prozentzeichen eingefasst sind (Voraussetzung ist, dass sie vor der Schleife definiert wurden). Bei Variablen die in Ausrufezeichen eingefasst sind, siehst du im Prompt noch keinen Wert.
Steffen
irgendwie fehlen mir da die Zusammenhänge. Ist das ganze tiefer verschachtelt (wie deine Einrückung vermuten lässt) und hast du FOR Variable %%A schon in einer der äußeren Schleifen verwendet? Dass du Variablen in Ausrufezeichen den Variableninhalt nicht sofort ausgegeben bekommst, ist in Schleifen normal. Erst wenn das ECHO Kommando tatsächlich ausgeführt wird, siehst du den Inhalt. Ansonsten wird bei eingeschaltetem Prompt (ECHO ON) erst einmal nur die Kommandozeile bzw. der (in Klammern eingefasste) Block von Kommandozeilen angezeigt, der abgearbeitet wird. Das wird bei tief verschachtelten Strukturen schnell unübersichtlich.
Einfaches Beispiel:
@echo off &setlocal EnableDelayedExpansion
set "foo=bar"
echo on
for /l %%i in (1 1 3) do (
echo foo=!foo!
echo foo=%foo%
set num=%%i
echo num=!num!
echo ~~~~~~~~~
)
pause
Ausgabe:
C:\Users\steffen\Desktop>for /L %i in (1 1 3) do (
echo foo=!foo!
echo foo=bar
set num=%i
echo num=!num!
echo ~~~~~~~~~
)
C:\Users\steffen\Desktop>(
echo foo=!foo!
echo foo=bar
set num=1
echo num=!num!
echo ~~~~~~~~~
)
foo=bar
foo=bar
num=1
~~~~~~~~~
C:\Users\steffen\Desktop>(
echo foo=!foo!
echo foo=bar
set num=2
echo num=!num!
echo ~~~~~~~~~
)
foo=bar
foo=bar
num=2
~~~~~~~~~
C:\Users\steffen\Desktop>(
echo foo=!foo!
echo foo=bar
set num=3
echo num=!num!
echo ~~~~~~~~~
)
foo=bar
foo=bar
num=3
~~~~~~~~~
C:\Users\steffen\Desktop>pause
Drücken Sie eine beliebige Taste . . .
Steffen