joe-nase
Goto Top

Textdateien über die ersten Zeichen der Zeilen vergleichen und fehlende Zeilen in neuer Datei ausgeben

Hallo zusammen,
erstmal vielen Dank für Euer Forum!!! Hat mir schon manche Anregung und/oder Richtung gezeigt.

Mein Anliegen betrifft Batch-Programmierung:
Der Thread Nr.150811 hat mir schon grundlegend weiter geholfen. Mit
fehlt mir nur noch die Möglichkeit in Abhängigkeit der ersten 6 Zeichen pro Zeile die Auswertung zu fahren.
Mit DELIMS= wird z.B. die gefundene Zeile auch noch ab dem Zeichen beschnitten.

Kann mir dazu jemand einen Tipp geben?-

PS:
Die Zeichen ab der 7. Stelle sind für die Auswertung irrelevant
Die ersten 6 Zeichen beinhalten Hex-Werte die aus file1 mit file2 verglichen werden sollen - und nur die in file1 NICHT vorhandenen Hex-Werte die mit file2 kommen sollen in das file3 geschrieben werden.
oder: die in file2 vorhanden Hex-Werte, die aber bereits in file1 vorhanden sein können, sollen nicht berücksichtigt werden.

Schon mal besten Dank im Voraus.
Gruß Helmut.

Content-Key: 499921

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

Printed on: April 25, 2024 at 00:04 o'clock

Mitglied: 141320
Solution 141320 Sep 30, 2019 updated at 13:15:28 (UTC)
Goto Top
Hi Helmut.
@echo off &setlocal ENABLEDELAYEDEXPANSION
set "file1=D:\test.txt"  
set "file2=D:\test2.txt"  
set "file3=D:\test3.txt"  
for /f "usebackq delims=" %%a in ("%file1%") DO (set "line=%%a" &findstr /ilbc:"!line:~0,6!" "%file2%" >null 2>&1 || >>"%file3%" echo.%%a)  
Obwohl ich heutzutage doch gleich zur Powershell / Bash & Co. greifen würde, Powershell-Beispiel:
compare (gc 'D:\file1.txt') (gc 'D:\file2.txt') -Property {$_.Substring(0,6)} -PassThru | ?{$_.SideIndicator -eq '<='} | sc 'D:\file3.txt'  
Gruß
Member: joe-nase
joe-nase Sep 30, 2019 at 14:54:26 (UTC)
Goto Top
Hallo nc6400!
Vielen vielen Dank. Hat mit meinen Testdaten funktioniert. Werde dann mal mein >67.000-Zeilen-Master durchforsten lassen face-wink)) (jou, wärgli!)
Die Powershell-Lösung werde ich mal im Auge behalten und mir aufdröseln - vllt. gibt es auch noch einen schönen Zeitunterschied.
Vielen Dank nochmals und eine gute Zeit noch - auch für die Mitstreiter...
Gruß Helmut.
Member: joe-nase
joe-nase Sep 30, 2019 at 19:54:50 (UTC)
Goto Top
- Hallöle - nochmal vielen Dank an nc6400!
dank der Begrenzung auf 6 Zeichen klappt das alles auch noch sehr schnell...
für die Statistiker:

acer d260 IntelAtom 1,6 GHz (512KB Cache) Win10/32bit
Master 67078 Zeilen mit
neu 3411 Zeilen verglichen :
CMD: 9 min
PS : 6 min

Begeisterung!
(Diese Zeit kann ich 4x im Jahr investieren face-wink )