m.fessler
Goto Top

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.

for /f "tokens=6" %%i in (test.txt) do...  
... 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:
{"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!  
)
(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

Content-ID: 440000

Url: https://administrator.de/contentid/440000

Ausgedruckt am: 13.11.2024 um 00:11 Uhr

139374
139374 12.04.2019 aktualisiert um 13:26:47 Uhr
Goto Top
@echo off
Powershell -ExecutionPolicy Bypass -NoP -C "[regex]::matches((gc 'c:\datei.txt' -raw),'(?is)\"id\"\s*?:\s*?\"([^\"]+)').Captures | ?{$_.Success} | %%{$_.Groups[1].Value}"  
https://tio.run/##lY5PS8NAEMXvfoplUZJoCWgvJZdQKloELWpqKdkY4mY0Szbusn80pe ...
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...