j1m3e84
Goto Top

Batch abfrage mit Löschen in einer TXT

Hallo,

ich möchte 2 TXT Dateien vergleichen und in der 2.txt den Inhalt löschen, wenn er auch in der 1.txt steht. Ich muss dazu sagen ich hab mit Programmieren nix am hut und muss nur hin und wieder für meinen Chef spezialwünsche erfüllen...

FOR /F "tokens=1 delims= " %%a IN (2.txt) do (  
FOR /F "tokens=1 delims= " %%b IN (1.txt) do (  
if %%a==%%b del %%a
))

Der Bereich (del %%a) ist der einzige der mir kopfzerbrechen bereitet... bekomme es einfach nicht hin!

Was muss hinter den 2 zeichenfolgen stehen, damit %%a in der Datei 2.txt gelöscht wird?

Wäre dankbar, wenn mir das schnell einer erklären könnte. So wie es jetzt da steht, möchte er die Datei namens "%%a" löschen, welche natürlich nicht existiert.

Ich danke euch für jede hilfe!

VG

Content-ID: 2501344356

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

Ausgedruckt am: 24.11.2024 um 10:11 Uhr

it-frosch
it-frosch 14.04.2022 aktualisiert um 17:08:25 Uhr
Goto Top
Hallo j1m3e84,

KISS (Keep it simple stupid)
Nimm Notepad++ und installiere (falls nicht vorhanden) das Compare Plugin.
Öffne beide Dateien und vergleiche sie.
Lösche das raus, was du nicht brauchst.

Grüße vom it-frosh
1915348599
Lösung 1915348599 15.04.2022 aktualisiert um 08:01:10 Uhr
Goto Top
@echo off
PowerShell -EP ByPass -C "compare @(Get-Content 1.txt) @(Get-Content 2.txt) -Passthru | ? SideIndicator -eq '=>' | Set-Content 2.txt"  
https://tio.run/##ZYyxDoIwEIb3PsWFBR1qAuioNnEwbiY8QS2nlFSK7REdfPfaFBdx@Y ...
j1m3e84
j1m3e84 19.04.2022 um 11:50:37 Uhr
Goto Top
Hi!

Klappt leider beides nicht.

@it-frosch:
Das hab ich getestet, ist allerdings vom Ergebnis das gleiche wie mit WinMarge.
Irgendwelche Sinnfreien Verfärbungen die kein Sinn ergeben. Da die Gleichen Zahlenketten nie in der gleichen Zeile stehen. Man bekommt keine übersicht eingestellt, die nur die x nicht doppelten hervorheben würde.

@1915348599:
habe den Link befolgt und in einer Patch datei die Werte zwischen die @@ gemacht und die listen sogar in neue dateien schreiben lassen.
Als Ergebnis bleibt die komplette 2.txt datei bestehen. Somit auch hier keine Filterung der 1x gelisteten Zahlenketten.


Trotzdem danke für eure Tipps!

Gibts sonst noch Lösungsmöglichkeiten?
Wäre sehr dankbar!
1915348599
1915348599 19.04.2022 aktualisiert um 11:59:10 Uhr
Goto Top
Zitat von @j1m3e84:

Hi!

Klappt leider beides nicht.
Blödsinn!
@1915348599:
habe den Link befolgt und in einer Patch datei die Werte zwischen die @@ gemacht und die listen sogar in neue dateien schreiben lassen.
Als Ergebnis bleibt die komplette 2.txt datei bestehen. Somit auch hier keine Filterung der 1x gelisteten Zahlenketten.
Nö das es klappt siehst du ja an der Online-Demo! Das ist ja auch ehrlich gesagt Pippifax und bekommen wir hier jede Woche einmal rein, du hast es nur falsch gemacht ...
Zur Info: Der Inhalt der 2.txt wird im Beispiel durch den neuen Inhalt ersetzt, du kannst das ganze natürlich auch in eine andere Datei zurückschreiben, einfach im Set-Content die Zieldatei ändern feddisch.
Guckst du auch
PowerShell Compare-Object
Also simple Standard-Chose die zu 100% klappt wenn man sie denn auch richtig anwendet ...
j1m3e84
j1m3e84 19.04.2022 um 12:00:38 Uhr
Goto Top
@"
test1
test2
test3
"@ | out-file 1.txt
@"
test1
test3
test4
test5
...

hier funktioniert es, weil er die jeweilige zeile gegen die andere vergleicht. ist der Inhalt nicht gleich, löscht er es nicht. (Siehe test4 und test5)
Bei meinen 2 Dateien sind die Zeilen alle verschoben. Daher funktioniert es nicht.

Ich habe das Beispiel 1:1 übernommen und die oberen Tests einfach durch meinen inhalt ausgetauscht. Das Ergebnis ist leider nicht das gewünschte.

Aber danke trotzdem.
1915348599
1915348599 19.04.2022 aktualisiert um 12:08:14 Uhr
Goto Top
Zitat von @j1m3e84:
hier funktioniert es, weil er die jeweilige zeile gegen die andere vergleicht. ist der Inhalt nicht gleich, löscht er es nicht. (Siehe test4 und test5)
Bei meinen 2 Dateien sind die Zeilen alle verschoben. Daher funktioniert es nicht.
NEIN! Das ist erneut Blödsinn! Hier wird nicht nach Zeilen verglichen!!! Die Reihenfolge ist absolut wurscht nur der Inhalt zählt ... guckst du
https://tio.run/##ZYyxDoIwEIb3PsWFBR1qAuqokjgYNxOeAMspJbWH7REdfPfaABMs// ...

Ich habe das Beispiel 1:1 übernommen und die oberen Tests einfach durch meinen inhalt ausgetauscht. Das Ergebnis ist leider nicht das gewünschte.
Dann hast du uns dein Vorhaben falsch beschrieben! Der obige Code macht das was du uns in deinem Ursprungspost geschrieben hast einwandfrei.
j1m3e84
j1m3e84 19.04.2022 um 12:14:35 Uhr
Goto Top
ich versteh nicht, warum du mich so angreifst...

Im Beitrag hab ich geschrieben:
"ich möchte 2 TXT Dateien vergleichen und in der 2.txt den Inhalt löschen, wenn er auch in der 1.txt steht."

jetzt habe ich 1:1 das Script von der Seite die du mir dankenswerter Weise gegeben hast ausgeführt. Habe sogar den Datei-Inhalt meiner Dateien in die Powershell rein kopiert und ausgeführt. Die 2 Dateien werden an meinem gewünschten ort angelegt. Aber der Text in der 2.txt wird leider nicht reduziert. Es steht das selbe drinnen, wie ich in der Powershell unter dem 3. @ eingetragen habe angezeigt.

Soviel Script wissen habe ich schon, um zu wissen, an welchen stellen ich meinen Inhalt eintragen muss.

VG
1915348599
1915348599 19.04.2022 aktualisiert um 12:24:08 Uhr
Goto Top
ich versteh nicht, warum du mich so angreifst...
?? Hier greift niemanden jemand an... Nur wenn man Falschinformationen verbreitet die so nicht stimmen und man korrekten Ergebnissen eines Online-Compilers nicht glaubt dann muss ich da kontern.

Tja, geht doch, hier lokal mit der Powershell ...

screenshot

Soviel Script wissen habe ich schon, um zu wissen, an welchen stellen ich meinen Inhalt eintragen muss.
Dann missverstehst du das Skript vermutlich oder suchst die Files an der falschen Stelle.
j1m3e84
j1m3e84 19.04.2022 um 12:33:39 Uhr
Goto Top
habe den Fehler gefunden.

1.txt hat hinter jeder Zeile ein Leerzeichen generiert beim erstellen.
Dadurch war der Vergleich durch das Leerzeichen manipuliert.

Danke für deine Hilfe!
1915348599
1915348599 19.04.2022 aktualisiert um 12:42:58 Uhr
Goto Top
Zitat von @j1m3e84:

habe den Fehler gefunden.

1.txt hat hinter jeder Zeile ein Leerzeichen generiert beim erstellen.
Dadurch war der Vergleich durch das Leerzeichen manipuliert.

Na also, das lässt sich auch noch automatisch handeln wenn man muss
https://tio.run/##ZY1BDoIwEEX3PcWEDbAoCaBLlcQY486EE2AZpQRabIfowrtXBNzA5u ...

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen.
j1m3e84
j1m3e84 19.04.2022 um 12:46:10 Uhr
Goto Top
Ja nachdem ich das festgestellt hatte, habe ich das behoben.
Die Ersteller-Batch dazu habe ich schon angepasst.
Danke dir für deine Mühe!

Schöne Woche noch!

VG