Komplette Zeile aus Textdatei auslesen
Hallo zusammen!
Ich möchte aus einer Textdatei immer die Zeile 4 auslesen und dessen Inhalt in eine Variable übernehmen. Dabei ändert sich der Inhalt der Textdatei häufiger.
Meine Test.cmd sieht momentan so aus:
Meine Beispieldatei für die auszulesende Textdatei neu.txt sieht so aus:
F1PF9G@€O6iL9vINVMlUua0oO398ERTZHGjBScosCl1ATwn
Z2PF9GO6@€iL9vINVMlUua0oO398KOREHGjBScosas1Aein
Ger3PF9GO6iL9vDETRlUua0oO398KORE@€HGjBScosCl1ATwn
q4PF@€9GO6iL9vINVMlUua0oO398KOREHGjBScosCl1AFEG
tZ5PF9GO6iL9vINVMlUua0oO398KO@€REHGjBScosC89Aiin
Z6PF==iL9vIN@€VMlUua0oO398KOREHGjBScosCl1ATwn
test_{}\~@€:_test
Wenn ich die CMD starte geschieht folgendes:
Wie man sieht, funktioniert das Script so nicht richtig. Es werden alle Zeilen ab Zeile 4 nacheinander der Variablen %zeile% zugewiesen, und am Ende erhält Sie die Daten der letzten Zeile der Textdatei, anstelle der benötigten Zeile 4. Auch wenn ich die Zeile 4 benötige, scheint es ebenso ein Problem mit der Zeile 6 zu geben, da nur die Werte vor den beiden "==" übergeben werden. Ebenso werden die Sonderzeichen aus der letzten Zeile der Textdatei falsch übernommen.
Offenbar sehe ich den Wald vor lauter Bäumen nicht. Kann mir hier bitte jemand weiterhelfen?
Gruß
tegwert
Ich möchte aus einer Textdatei immer die Zeile 4 auslesen und dessen Inhalt in eine Variable übernehmen. Dabei ändert sich der Inhalt der Textdatei häufiger.
Meine Test.cmd sieht momentan so aus:
::@ECHO OFF
SET zeile=
FOR /f "usebackq skip=3 delims==" %%i IN ("neu.txt") DO SET "zeile=%%i"
ECHO %zeile%
PAUSE
EXIT
Meine Beispieldatei für die auszulesende Textdatei neu.txt sieht so aus:
F1PF9G@€O6iL9vINVMlUua0oO398ERTZHGjBScosCl1ATwn
Z2PF9GO6@€iL9vINVMlUua0oO398KOREHGjBScosas1Aein
Ger3PF9GO6iL9vDETRlUua0oO398KORE@€HGjBScosCl1ATwn
q4PF@€9GO6iL9vINVMlUua0oO398KOREHGjBScosCl1AFEG
tZ5PF9GO6iL9vINVMlUua0oO398KO@€REHGjBScosC89Aiin
Z6PF==iL9vIN@€VMlUua0oO398KOREHGjBScosCl1ATwn
test_{}\~@€:_test
Wenn ich die CMD starte geschieht folgendes:
Wie man sieht, funktioniert das Script so nicht richtig. Es werden alle Zeilen ab Zeile 4 nacheinander der Variablen %zeile% zugewiesen, und am Ende erhält Sie die Daten der letzten Zeile der Textdatei, anstelle der benötigten Zeile 4. Auch wenn ich die Zeile 4 benötige, scheint es ebenso ein Problem mit der Zeile 6 zu geben, da nur die Werte vor den beiden "==" übergeben werden. Ebenso werden die Sonderzeichen aus der letzten Zeile der Textdatei falsch übernommen.
Offenbar sehe ich den Wald vor lauter Bäumen nicht. Kann mir hier bitte jemand weiterhelfen?
Gruß
tegwert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347107
Url: https://administrator.de/contentid/347107
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
Du sagst es. Ab zeile 4. Skip=3 bedeutet die ersten 3 Zeilen überspringen und alle anderen danach. Ein For /? sagt es dir.
Bat Script Probleme bei Sonderzeichen
Sonderzeichen in Batch-Variable maskieren
Suchen und Ersetzen Text mit Sonderzeichen in Batch Datei
Die Geheimnisse des Batch Zeilen Interpreters
Natürlich sind auch die verwendeten Zeichensätze zu beachten, je nach....
Powershell ist keine Alternative?
Gruß,
Peter
Du sagst es. Ab zeile 4. Skip=3 bedeutet die ersten 3 Zeilen überspringen und alle anderen danach. Ein For /? sagt es dir.
Ebenso werden die Sonderzeichen
Auch hier sagst du es schon. Sonderzeichen werden wohl dann Maskiert werden müssen bevor die in deine variabel kopiert werden oder bevor diese mit ein Echo %Zeile% ausgegeben werden. Vielleicht hilft dir EnabledelayedExpansion und ! anstelle von % in dein Code.Bat Script Probleme bei Sonderzeichen
Sonderzeichen in Batch-Variable maskieren
Suchen und Ersetzen Text mit Sonderzeichen in Batch Datei
Die Geheimnisse des Batch Zeilen Interpreters
Natürlich sind auch die verwendeten Zeichensätze zu beachten, je nach....
Powershell ist keine Alternative?
Gruß,
Peter
1. Deine Textdatei ist (deinem Screenshot zufolge) UTF-8 codiert. Dein Batchscript liest die Datei aber standardmäßig mit der eingestellten OEM Codepage. Ergo, auf UTF-8 wechseln (Codpage 65001).
2. Wenn die Schleife nach dem Lesen der vierten Zeile abbrechen soll, dann musst du natürlich auch sofort aus der Schleife herausspringen. Ich würde aber eher mit SET /P arbeiten, à la
3. Sollte das Script das € Zeichen immer noch nicht korrekt (bspw. als Fragezeichen) anzeigen, dann hast du für die Console eine Schriftart eingestellt, die dieses Zeichen nicht unterstützt. Nutze bspw. Lucida Console oder Consolas.
Grüße
rubberman
2. Wenn die Schleife nach dem Lesen der vierten Zeile abbrechen soll, dann musst du natürlich auch sofort aus der Schleife herausspringen. Ich würde aber eher mit SET /P arbeiten, à la
@echo off & setlocal EnableDelayedExpansion
>nul chcp 65001
<"neu.txt" (
for /l %%i in (1 1 3) do set /p "="
set /p "zeile="
)
echo(!zeile!
>nul chcp 850
pause
Grüße
rubberman