tegwert
Goto Top

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:
::@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:
zwischenablage-2

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

Content-ID: 347107

Url: https://administrator.de/forum/komplette-zeile-aus-textdatei-auslesen-347107.html

Ausgedruckt am: 23.12.2024 um 11:12 Uhr

Pjordorf
Pjordorf 23.08.2017 um 18:55:52 Uhr
Goto Top
Hallo,

Zitat von @tegwert:
Es werden alle Zeilen ab Zeile 4
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
rubberman
Lösung rubberman 23.08.2017 aktualisiert um 19:22:23 Uhr
Goto Top
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
@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
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
tegwert
tegwert 23.08.2017 um 20:58:37 Uhr
Goto Top
Hallo rubberman

Deine Lösung ist genau das richtige!

Vielen Dank!

Gruß
tegwert