txt Listen Auswerten per Batch-Datei
Hallo Zusammen
Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte.
In der Liste 1 sind folgende Werte gespeichert:
CH0001
CH0002
CH0004
CH0005
CH0006
CH0009
CH0010
CH0012
Und in der Liste 2 diese Werte:
CH0001
CH0003
CH0004
CH0005
CH0007
CH0009
CH0010
CH0011
CH0012
Nun möchte ich in einer 3. Liste Alle Werte ausgeben, die in der Liste 1 sind, aber nicht in der Liste 2.
Also folgendes:
CH0002
CH0006
Wie schon gesagt möchte ich dies mit einer Batch-Datei lösen. Ist dies überhaupt möglich? (Ich bin noch ziemlich unerfahren mit Batch-Dateien)
Oder gibt es eine einfachere Lösung als mit einer Batch-Datei? Das ganze sollte später in einem automatisierten Ablauf gemacht werden, also ist Excel keine Lösung ;)
Vielen Dank für eure Hilfe
Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte.
In der Liste 1 sind folgende Werte gespeichert:
CH0001
CH0002
CH0004
CH0005
CH0006
CH0009
CH0010
CH0012
Und in der Liste 2 diese Werte:
CH0001
CH0003
CH0004
CH0005
CH0007
CH0009
CH0010
CH0011
CH0012
Nun möchte ich in einer 3. Liste Alle Werte ausgeben, die in der Liste 1 sind, aber nicht in der Liste 2.
Also folgendes:
CH0002
CH0006
Wie schon gesagt möchte ich dies mit einer Batch-Datei lösen. Ist dies überhaupt möglich? (Ich bin noch ziemlich unerfahren mit Batch-Dateien)
Oder gibt es eine einfachere Lösung als mit einer Batch-Datei? Das ganze sollte später in einem automatisierten Ablauf gemacht werden, also ist Excel keine Lösung ;)
Vielen Dank für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 286118
Url: https://administrator.de/contentid/286118
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
9 Kommentare
Neuester Kommentar
Guten Morgen
Ich benutze dafür immer diesen Batch den ich mir vor Urzeiten mal geschrieben habe
MfG
Budders
Ich benutze dafür immer diesen Batch den ich mir vor Urzeiten mal geschrieben habe
@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%a in (datei1.txt) do (
set found=n
for /f "delims=" %%b in (datei2.txt) do (
if "%%a"=="%%b" set found=j
)
if !found!==n echo %%a>>output.txt
)
MfG
Budders
Kein Problem, dann versuche ich ihn dir mal zu erklären ^^
Zeile 1 und 2 sollten klar sein hoffe ich.
Zeile 3 durchläuft nacheinander jede Zeile der datei1.txt (hier musst du "datei1.txt" durch den Dateinamen deiner ersten Listendatei ersetzen.)
Zeile 4 setzt für jede Zeile in der datei1.txt eine Variable auf n
Zeile 5 durchläuft anschließend alle Zeilen der datei2.txt (hier auch "datei2.txt" durch den Dateinamen deiner zweiten Listendatei ersetzen.)
Zeile 6 prüft ob die Zeile aus datei1.txt in datei2.txt gefunden wurde (einfache if-Abfrage.) wenn ja: setzt er die in Zeile 4 definierte Variable auf j
Zeile 8 schaut dann auf die Variable aus Zeile 4 und 6 und schreibt die nicht in datei2.txt gefundene Zeile in eine output.txt
Um das zum Laufen zu bekommen müsstest du nur "datei1.txt" und "datei2.txt" anpassen.
Als .bat oder .cmd in dem Verzeichnis speichern wo auch beide Dateien liegen (oder die Pfade komplett deklarieren), ausführen und in die output.txt schauen, welche der Zeilen aus deiner ersten Liste nicht in der Zweiten auftauchen
Hoffe ich konnte dir helfen.
MfG
Budders
Zeile 1 und 2 sollten klar sein hoffe ich.
Zeile 3 durchläuft nacheinander jede Zeile der datei1.txt (hier musst du "datei1.txt" durch den Dateinamen deiner ersten Listendatei ersetzen.)
Zeile 4 setzt für jede Zeile in der datei1.txt eine Variable auf n
Zeile 5 durchläuft anschließend alle Zeilen der datei2.txt (hier auch "datei2.txt" durch den Dateinamen deiner zweiten Listendatei ersetzen.)
Zeile 6 prüft ob die Zeile aus datei1.txt in datei2.txt gefunden wurde (einfache if-Abfrage.) wenn ja: setzt er die in Zeile 4 definierte Variable auf j
Zeile 8 schaut dann auf die Variable aus Zeile 4 und 6 und schreibt die nicht in datei2.txt gefundene Zeile in eine output.txt
Um das zum Laufen zu bekommen müsstest du nur "datei1.txt" und "datei2.txt" anpassen.
Als .bat oder .cmd in dem Verzeichnis speichern wo auch beide Dateien liegen (oder die Pfade komplett deklarieren), ausführen und in die output.txt schauen, welche der Zeilen aus deiner ersten Liste nicht in der Zweiten auftauchen
Hoffe ich konnte dir helfen.
MfG
Budders
Das ist merkwürdig.
Bei mir funktioniert genau der exakte Code reibungslos.
Magst du ein mal eine Eingabeaufforderung da starten, wo das Skript liegt und diese mit call aufrufen? Vorher das @echo off entfernen. Und schauen ob/wo es abbricht und ggf. das Ergebnis posten. Würde mich sehr interessieren was da nicht hin haut.
Und noch als Hinweis, dem Skript ist es egal in welcher Reihenfolge die Datensätze in der Datei stehen. Es kontrolliert nur ob in beiden Dateien die gleichen Sätze stehen, die Position ist egal.
Schönen Feierabend
-Budders
Bei mir funktioniert genau der exakte Code reibungslos.
Magst du ein mal eine Eingabeaufforderung da starten, wo das Skript liegt und diese mit call aufrufen? Vorher das @echo off entfernen. Und schauen ob/wo es abbricht und ggf. das Ergebnis posten. Würde mich sehr interessieren was da nicht hin haut.
Und noch als Hinweis, dem Skript ist es egal in welcher Reihenfolge die Datensätze in der Datei stehen. Es kontrolliert nur ob in beiden Dateien die gleichen Sätze stehen, die Position ist egal.
Schönen Feierabend
-Budders
Super Lösung, danke!
Ich möchte ebenfalls TXT-Files vergleichen, habe leider eine kleine zusätzliche Schwierigkeit.
Ich möchte Parameter prüfen, unabhängig vom gesetzten Wert.
Die Zeilen enthalten einen Wert, ein Leerzeichen oder Tab und wieder einen Wert.
Beispiel:
Liste 1
PARAM1 No
PARAM2 -
PARAM3 YES
PARAM4 YES
PARAM5 YES
Liste 2
PARAM1 No
PARAM2 -
PARAM5 YES
Möchte also wissen, welche PARAMETER nicht gesetzt wurden.
Danke
Ich möchte ebenfalls TXT-Files vergleichen, habe leider eine kleine zusätzliche Schwierigkeit.
Ich möchte Parameter prüfen, unabhängig vom gesetzten Wert.
Die Zeilen enthalten einen Wert, ein Leerzeichen oder Tab und wieder einen Wert.
Beispiel:
Liste 1
PARAM1 No
PARAM2 -
PARAM3 YES
PARAM4 YES
PARAM5 YES
Liste 2
PARAM1 No
PARAM2 -
PARAM5 YES
Möchte also wissen, welche PARAMETER nicht gesetzt wurden.
Danke