lena123
Goto Top

Wort innerhalb einer Textdatei finden und Zeile auslesen mit Batch-Datei

Hallo,

ich habe zwar schon viele ähnliche Beiträge gefunden aber bin trotzdem noch nicht weiter gekommen. Ich habe eine Textdatei in der sich folgender Inhalt mit anderen Werten 10x wiederholt:


KO_384x288_30.yuv

x264 [info]: using cpu capabilities: MMX MMXEXT SSE SSE2
x264 [info]: slice I:1 Avg QP:23.00 size: 10516 PSNR Mean Y:43.07 U:45.93 V:46.85 Avg:43.92 Global:43.92
x264 [info]: slice P:299 Avg QP:26.00 size: 935 PSNR Mean Y:40.31 U:43.73 V:44.46 Avg:41.24 Global:41.23
x264 [info]: mb I I16..4: 48.1% 0.0% 51.9%
x264 [info]: mb P I16..4: 0.8% 0.0% 0.2% P16..4: 21.3% 12.5% 4.7% 0.0% 0.0% skip:60.4%
x264 [info]: SSIM Mean Y:0.9795547
x264 [info]: PSNR Mean Y:40.318 U:43.733 V:44.470 Avg:41.250 Global:41.238 kb/s:193.39

Ich möchte nun z.B. den Wert der hinter SSIM Mean steht auslesen und in einen Neue Textdatei schreiben. Am besten wäre es wenn zusätzlich noch der Name (KO_384x288_30.yuv) mitausgegeben wird!

Gruß und Danke!

Content-Key: 68916

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

Printed on: April 18, 2024 at 05:04 o'clock

Member: bastla
bastla Sep 18, 2007 at 11:14:06 (UTC)
Goto Top
Hallo lena123 und willkommen im Forum!

Falls der Name immer in der zweiten Zeile steht, könnte das so gehen:
@echo off & setlocal
set "Ein=D:\Textdatei.txt"  
set "Aus=D:\TextNeu.txt"  
set Name=
for /f "usebackq skip=1 delims=" %%i in ("%Ein%") do if not defined Name set "Name=%%i"  
echo %Name%>"%Aus%"  
for /f "tokens=3 delims=:" %%i in ('findstr /c:"SSIM Mean Y:" "%Ein%"') do (echo %%i)>>"%Aus%"  

Grüße
bastla
Member: lena123
lena123 Sep 18, 2007 at 11:25:28 (UTC)
Goto Top
Hallo bastla,

der Name steht leider nicht immer in der 2. Zeile, da werd ich noch etwas rumprobieren aber der Rest funktioniert einwandfrei, vielen vielen Dank für die schnelle Antwort!

Gruß
Member: bastla
bastla Sep 18, 2007 at 12:58:23 (UTC)
Goto Top
Hallo lena123!

Wenn der Name zumindest immer nach der ersten Zeile mit "================================================" kommt:
@echo off & setlocal
set "Ein=D:\Textdatei.txt"  
set "Aus=D:\TextNeu.txt"  
set Zeile=
for /f "delims=:" %%i in ('findstr /n "================================================" "%Ein%"') do if not defined Zeile set Zeile=%%i  
set Name=
for /f "usebackq skip=%Zeile% delims=" %%i in ("%Ein%") do if not defined Name set "Name=%%i"  
echo %Name%>"%Aus%"  
for /f "tokens=3 delims=:" %%i in ('findstr /c:"SSIM Mean Y:" "%Ein%"') do (echo %%i)>>"%Aus%"  

Grüße
bastla
Member: lena123
lena123 Sep 18, 2007 at 14:37:17 (UTC)
Goto Top
Hallo bastla,

danke für den Vorschlag, die Anzahl der = Zeichen ist immer gleich, es wird allerdings immer nur der erste Name ausgegeben!?!

Die Namen stehen immer in regelmäßigen Abständen, daher habe ich deine erste Lösung genommen und die Anweisung wiederholt, kann man sicher auch mit ner Schleife lösen, aber fürs erste funktionierts.

gruß