Batch - Bestimmten Bereich (Stelle variiert) aus einer Textdatei auslesen und editieren
Schönen guten Tag,
im Grunde habe ich zwei zusammenhängende Fragen:
Das "Grundproblem": Ich möchte einen bestimmten Bereich aus einer Textdatei auslesen, welcher sich aber nicht immer an derselben Stelle befindet.
... fällt also schon mal raus.
Wie kann ich einen Teil auslesen wenn er zumindest immer mit demselben vorangestellten Text (z.B. "id": ) gekennzeichnet ist?
Konkret sieht die Textdatei zum Beispiel so aus:
Wie bekomme ich da jeweils die ids raus - jede in einer einzelnen Zeile?
(Quelle: Hier aus dem Forum - Danke!)
Funktioniert soweit, aber eben nur wenn die IDs immer an derselben Stelle sind.
Vielen Dank schon mal und Grüße,
Martin
im Grunde habe ich zwei zusammenhängende Fragen:
Das "Grundproblem": Ich möchte einen bestimmten Bereich aus einer Textdatei auslesen, welcher sich aber nicht immer an derselben Stelle befindet.
for /f "tokens=6" %%i in (test.txt) do...
Wie kann ich einen Teil auslesen wenn er zumindest immer mit demselben vorangestellten Text (z.B. "id": ) gekennzeichnet ist?
Konkret sieht die Textdatei zum Beispiel so aus:
{"ie_key": "Youtube", "_type": "url", "id": "xJcTmkUxY8U", "title": "HOW TO DRAW CAT", "url": "xJcTmkUxY8U"}
{"ie_key": "Youtube", "_type": "url", "id": "oNfHrmaersk", "title": "intro top kids", "url": "oNfHrmaersk"}
{"ie_key": "Youtube", "_type": "url", "id": "Qx3s8vM3hFc", "title": "demo 2", "url": "Qx3s8vM3hFc"}
Wie bekomme ich da jeweils die ids raus - jede in einer einzelnen Zeile?
@echo off & setlocal enableDelayedExpansion
For /F "tokens=6" %%i in (test.txt) do (
Set "Line=%%~i"
For /L %%j in (0,20,180) do if "!line:~%%j,11!" NEQ "" @echo !line:~%%j,11!
)
Funktioniert soweit, aber eben nur wenn die IDs immer an derselben Stelle sind.
Vielen Dank schon mal und Grüße,
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 440000
Url: https://administrator.de/contentid/440000
Ausgedruckt am: 21.11.2024 um 12:11 Uhr
1 Kommentar
@echo off
Powershell -ExecutionPolicy Bypass -NoP -C "[regex]::matches((gc 'c:\datei.txt' -raw),'(?is)\"id\"\s*?:\s*?\"([^\"]+)').Captures | ?{$_.Success} | %%{$_.Groups[1].Value}"
Btw. Das sieht aus wie JSON, das wäre noch einfacher auszulesen, ohne Gesamt-Kontext aber kein Beispiel, sowas macht man dann normalerweise immer per Parser , aber heute ist ja eh Freitag...