donnobre
Goto Top

2 Zeilen 2er txt dateien mit batch vergleichen und vorhandene löschen

Hallo zusammen, wieder einmal habe ich ein Problem und wiedereinmal wende ich mich an euch

Habe schon mehrere google suchen gestartet, aber leider nichts passendes gefunden. Was ich brauche/suche ist eine batch Formel die 2 txt dateien mit einander vergleicht und wenn ein gleicher Eintrag gefunden wurde. ihn löscht. Aber dies ohne zusatz programme wie SED.
Leider bin ich nur über sehr viele umwege in der lage sowas du machen und das ergebnis ist leider nicht wie gewünscht.

Beispiel:

1.txt mit dem inhalt:
c:\blablabla\datei1.txt
c:\blablabla\datei2.txt
c:\blablabla\datei3.txt

2.txt mit dem inhalt
c:\blablabla\datei1.txt

aus 1.txt wird somit die zeile c:\blablabla\datei1.txt gelöscht und die datei mit dem inhalt
c:\blablabla\datei2.txt
c:\blablabla\datei3.txt
gespeichert.

Content-Key: 169695

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

Printed on: April 23, 2024 at 19:04 o'clock

Mitglied: 60730
60730 Jul 13, 2011 at 18:03:18 (UTC)
Goto Top
moin,

C:\script\test\456>type a.txt
ab
cd
ef
gh
C:\script\test\456>type b.txt
ab
gh
C:\script\test\456>


C:\script\test\456>type c.txt
cd
ef

War nicht wirklich schwer.
Member: DONNobre
DONNobre Jul 13, 2011 at 18:35:02 (UTC)
Goto Top
Hallo und danke für die schnelle antw.
es sieht einfach aus ist es aber nicht

ich hatte etwas ähnliches probiert aber es ging nicht. jetzt habe ich deinen vorschlag genommen und ihn geändert doch leider bekomme ich eine fehlermeldung

for /f "delims=" %a in ("z:\ergebnis_1.txt") do findstr /c:"%a" "z:\ergebnis_2.txt" || echo %a>>"z:\Ergebnis_neu.txt"  

Als fehlermeldung kommt dies

C:\>call :ZeileAndern
kann syntaktisch an dieser Stelle nicht verarbeitet werden.

\Ergebnis_neu.txt"
er findet also nicht die datei, nehme ich mal so an ... habe das ganze auch schon in mehreren varianten getestet aber leider keinen erfolg gehabt
Mitglied: 60730
60730 Jul 13, 2011 at 18:48:20 (UTC)
Goto Top
Salü,

bitte immer ganze Tiere verfüttern...

C:\>call :ZeileAndern
das steht doch nirgendwo in dem Einzeilerchen...

  • dann ist das eine Demo für die Tante Dosbox, keine Batch

Du schrubst doch, das du schon ganz viel gesucht / gefunden hast %a == Demo für die Dosbox, %%a==batchzeile

btw:
es sieht einfach aus ist es aber nicht

nein ist es und die Zeilen mit hellblauen Hintergrund sind echte copy & paste Daten aus meiner Dosbox.

Gruß
Member: Friemler
Friemler Jul 13, 2011 at 19:18:54 (UTC)
Goto Top
Hallo DONNobre,

zusätzlich zu dem, was TiMo schon geschrubt hat - ich werfe Dir mal ein paar Stichworte hin:

FOR /F, Dateiname, Anführungszeichen, USEBACKQ face-wink

[EDIT]
Hat sich in Deinem letzten Posting erledigt.
Du solltest die Ausgabeumleitung beim ECHO-Befehl vor den ECHO-Befehl schreiben.

Außerdem ist da ein Anführungszeichen zu viel nach dem Namen der Datei, in der FINDSTR-suchen soll.
[EDIT2]
Du hast nachgebessert!
[/EDIT2]

[/EDIT]

Gruß
Friemler
Member: DONNobre
DONNobre Jul 13, 2011 at 19:20:01 (UTC)
Goto Top
Hi Timo
klar hatte ich die %a auch schon geändert bzw es damit probiert
hab schneller eine antw. gepostet als es bis zum ende zu formulieren.

dein code klappt auch wunderbar war ein denkfehler von mir .. er wollte admin rechte haben die ich ihm nicht gegeben hatte (man nerven mich diese admin rechte)

habe ihn jetzt mal für batch mit call aufruf hier

for /f "delims=" %%a in (z:\ergebnis.txt) do findstr /c:"%%a" z:\ergebnis_Send.txt || echo %%a>>z:\Ergebnis_neu.txt  

Vielen dank
Member: DONNobre
DONNobre Jul 13, 2011 at 19:27:57 (UTC)
Goto Top
*G* den hatte ich auch gerade korrigiert ....

was ist der unterschied zwischen

echo %%a>>z:\Ergebnis_neu.txt

und
>>z:\Ergebnis_neu.txt echo %%a

kommt nicht beides auf das selbe raus?
Member: Friemler
Friemler Jul 13, 2011 at 19:36:41 (UTC)
Goto Top
Sollte man meinen. CMD sieht das anders. Zwischen dem, was in die Datei geschrieben werden soll, und dem >> besser ein Leerzeichen einfügen. Das landet dann aber auch in der Datei. Deshalb Goldene Regel: Die Ausgabeumleitung immer vor den ECHO-Befehl.

Sollte %%a z.B. als letztes Zeichen eine 2 enthalten, wird daraus echo xxx2>>z:\Ergebnis_neu.txt. Dann wird nur der Standardfehlerkanal in die Datei umgeleitet. Da höchstwahrscheinlich kein Fehler auftritt, wird auch nichts in die Datei geschrieben.

Gruß
Friemler
Member: DONNobre
DONNobre Jul 13, 2011 at 19:49:19 (UTC)
Goto Top
ahhh ok danke bin wieder etwas schlauer
Member: Friemler
Friemler Jul 13, 2011 at 19:53:04 (UTC)
Goto Top
Batchscript ist ein Minenfeld. face-wink
Member: DONNobre
DONNobre Jul 24, 2011 at 10:26:43 (UTC)
Goto Top
Ich merke es immer wieder und es nervt face-smile
Member: DONNobre
DONNobre Aug 05, 2011 at 18:52:14 (UTC)
Goto Top
wieso geht es nicht wenn ich
eigene = c:\programme\ftp

FOR /F "tokens=1 delims=" %%i in (%Eigene%\ergebnis.txt) do set ORDNER=%%i & call :app  

schreibe. nur wenn ich wirklich ein laufwerk subbe .. ?
Mitglied: 60730
60730 Aug 05, 2011 at 20:53:21 (UTC)
Goto Top
Zitat von @DONNobre:
wieso geht es nicht wenn ich
eigene = c:\programme\ftp

FOR /F "tokens=1 delims=" %%i in (z:\ergebnis.txt) do set ORDNER=%%i & call :app  

habe das mal hier reingeschriebn

und ich dir mal
Zitat von @60730:
Salü,

bitte immer ganze Tiere verfüttern...

  • deine falschen Codeblöcke hab ich mal richtig herum gesetzt, aber der Rest ist ein Minenfeld....
Hotly discussed
gleixnerdCheck of ZFW Firewallgleixnerd - 5 CommentsjstrickerWireguard VPN on UDM Pro behind Fritzbox - Handshake did not completejstricker - 3 CommentsAlexWishaHow to set up and configure a Linux GRE tunnelAlexWisha - 3 Comments