andichrist
Goto Top

Zwei TXT-Dateien inhaltlich miteinander vergleichen. Werte die identisch sind in neue TXT Datei schreiben!

Hallo

ich habe zwei TXT-Dateien, eine Inventarliste.txt mit dem kompletten Artikelbestand und eine Datei Delta.txt mit fehlenden Artikel (als Zahlenreihe). Beide Dateien habe 4-stellige Zahlen pro Zeile, die verglichen werden sollen. Die Zahlen die identisch sind sollen mit der Artikelbezeichnung (aus der Inventarliste) in eine dritte TXT-Datei geschrieben werden!

Aufbau: Inventarliste.txt

0000 - Blaues Geländer
0001 - Treppenabsatz beige
....
3648 - Duschkopf chrom
3649 - Duschkopf blau
3650 - Blumenvase lila
3651 - Blumenvase grün
3652 - Abflußrohr
...
3753 - Stehlampe Modell Klara
3754 - Funkuhr Modell Schwarzwald
3755 - Tisch
....

Aufbau: Delta.txt

...
3648
3649
3650
3651
3652
3753
3754
3755
...

ERGEBNIS in Fehlliste.txt

...
3648 - Duschkopf chrom
3649 - Duschkopf blau
3650 - Blumenvase lila
3651 - Blumenvase grün
3652 - Abflußrohr
...
3753 - Stehlampe Modell Klara
3754 - Funkuhr Modell Schwarzwald
3755 - Tisch
...

Weiß jemand Rat und hat eine Lösung als Batch parat?

Danke im Voraus
Andy

Content-ID: 128133

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

Ausgedruckt am: 24.11.2024 um 23:11 Uhr

H41mSh1C0R
H41mSh1C0R 28.10.2009 um 16:58:31 Uhr
Goto Top
Hi,

auch hier heißt das Zauberwort: Delimiter ^^ und Token. Wenn das Ganze Zeilenweise nur

<4stellige Zahl> - <Text>

beinhaltet dann haste deinen Delimiter das "-" schonmal gefunden.

Nun brauchste nur noch:

1. Inventarliste Zeile auslesen
1.1. den Zeilenstring zerlegen um die Zahl zu bekommen
2. Delta in schleife auslesen bis Zahl gefunden und dann den gepufferten String aus Schritt 1 in Fehlliste.txt schreiben
3. wieder zu schritt 1 bis EOF =)

Gruß

PS:
verdammt Timo war mit seiner Zeile schneller xD, wobei ich gerne den Fragenden immer die Chance gebe selber noch was zur Lösung beizutragen =).
Silbertablett ist doch shice xD.
60730
60730 28.10.2009 um 16:58:33 Uhr
Goto Top
Servus,

sorry - mein Kopf raucht und der Kaffee iss alle...

Ich vermute dass ich das aber trotzdem richtig gelesen habe.

for /f "tokens= 1,* delims=-" %%a in (inventar.txt) do findstr "%%a" "delta.txt" && echo %%a - %%b >>liste.txt  

Gruß

edit - dafür ist mein Kopf Kaffe auch alle - ich marschier mal zum Kaffeeschuppen ...
edit² da bastla heut nicht auf Schleifen springt und ich grad wohl den Schleifer gebe - auf die eine mehr kams da nicht an.
btw: Nett Hallo stand ja da face-wink
Biber
Biber 28.10.2009 um 18:22:22 Uhr
Goto Top
Moin andichrist,

ich weiss ja nicht, ob die andern beiden zu viel Langeweile haben, aber .... face-wink
[Die übliche Demo am CMD-Prompt; ">" nicht mit eingeben ]
>findstr /g:delta.txt inventarliste.txt
3648 - Duschkopf chrom
3649 - Duschkopf blau
3650 - Blumenvase lila
3651 - Blumenvase grün
3652 - Abflußrohr
3753 - Stehlampe Modell Klara
3754 - Funkuhr Modell Schwarzwald
3755 - Tisch
ggf Ergebnis umleiten in neue Datei mit ">M:\eine\neueDatei.txt"

Grüße
Biber
60730
60730 28.10.2009 um 18:27:26 Uhr
Goto Top
Nee muß noch ein paar minuten hier hocken, weil der Telekomiker vor 20? minuten schon wieder weg sein wollte - dabei iss er noch garnüschd da
[OT]
@ Biber...
kaum schreib ich mal nen Einzeiler...
[/OT]

Grüße
Andichrist
Andichrist 28.10.2009, aktualisiert am 18.10.2012 um 18:39:48 Uhr
Goto Top
Hallo an @alle,

danke für eure tollen und doch einfachen Lösungen!!!

Ich war auch selbst schon aktiv und habe einen Thread von 'bastla' ausgegraben. Durch ausprobieren (Versuch und Irrtum) face-wink konnte ich 'bastlas' Batch so hinbiegen dass sie auch hier funktioniert! face-smile

Also 'bastlas' Lösungsansatz wäre:

@echo off & setlocal
set "Quelle=Inventarliste.txt"
set "Liste=Delta.txt"
set "Erg=Fehlliste.txt"

if exist "%Erg%" del "%Erg%"
for /f "usebackq delims=" %%i in ("%Liste%") do for /f "delims=" %%d in ('findstr /c:"%%i" "%Quelle%"') do >>"%Erg%" echo %%d

Viele Grüße
Andy

PS: Die Batch wird direkt in dem Ordner aufgerufen in dem auch die Dateien Inventarliste.txt und Delta.txt zu finden sind.
bastla
bastla 29.10.2009 um 16:19:59 Uhr
Goto Top
Hallo Andy!

[OT]
... konnte ich 'bastlas' Batch so hinbiegen dass es auch funktioniert! face-smile
Das macht doch nix, ist mir auch schon passiert ... face-wink
[/OT]

Grüße
bastla
Andichrist
Andichrist 04.11.2009 um 14:46:59 Uhr
Goto Top
@ bastla,

ÄHM! Ich meinte natürlich Deine ursprünglich 100% funktionierte Batch an die (meine) neuen Anforderungen anpassen, dass sie auch hier funktioniert! face-smile

Ich hab' es oben korrigiert!

Grüße
Andychrist
Biber
Biber 04.11.2009 um 15:24:31 Uhr
Goto Top
Moin Andichrist,
Zitat von @Andichrist:
ÄHM! Ich meinte natürlich Deine ursprünglich 100% funktionierte Batch an die (meine) neuen Anforderungen anpassen, dass sie auch hier funktioniert! face-smile
Das könntest du auch mit meinen angelegten Schnipseln machen, wenn du eh' grad am Aufräumen bist und/oder langeweile hast.
Soll ich mal einen Eimer voll davon irgendwo auf den Forumsboden kippen? face-wink

Grüße
Biber
Andichrist
Andichrist 04.11.2009 um 16:08:22 Uhr
Goto Top
Moin Biber,

danke für den Hinweis. Ich habe es oben korrigiert!

Gruß
Andychrist