62641
08.05.2008, aktualisiert um 15:24:50 Uhr
4948
4
0
Suchen und Ersetzen
Hallo,
ich bräuchte mal schnell Eure Hilfe.
Und zwar geht es um ein Batch-Skript, das nach bestimmten Ordnern und ausführbaren Dateien sucht.
Da es manche Dateien öfter gibt und ich die aber nur einmal gelistet haben möchte, dachte ich, ich kann die durch Suchen/Ersetzen filtern.
Also wenn die Datei z. B. so aussieht:
1234
1234
1234
123456
1234
1234
4321
4321
1234
123456
4321
.. dann sollte sie danach so aussehen (Reihenfolge egal):
1234
123456
4321
Also alle doppelten Zeilen herausfiltern.
(Kleine Überlegung: Wenn er jetzt in der Variable z. B. "halloblubb" gespeichert hat, kann er dann alle Zeilen die "halloblubb" lauten löschen und sich dann ganz normal wieder ans Ende der Datei schreiben?
Also in etwa:
Batch Start ------
...
...
...
in txt.txt jede zeile mit %variable% löschen
%variable% >> txt.txt
Batch Ende
)
Ich hoffe, ich hab mich nich zu blöd ausgedrückt. :>
Dankeschön =)
(Hab leider keine Lösung in der Sufu gefunden. )
ich bräuchte mal schnell Eure Hilfe.
Und zwar geht es um ein Batch-Skript, das nach bestimmten Ordnern und ausführbaren Dateien sucht.
Da es manche Dateien öfter gibt und ich die aber nur einmal gelistet haben möchte, dachte ich, ich kann die durch Suchen/Ersetzen filtern.
Also wenn die Datei z. B. so aussieht:
1234
1234
1234
123456
1234
1234
4321
4321
1234
123456
4321
.. dann sollte sie danach so aussehen (Reihenfolge egal):
1234
123456
4321
Also alle doppelten Zeilen herausfiltern.
(Kleine Überlegung: Wenn er jetzt in der Variable z. B. "halloblubb" gespeichert hat, kann er dann alle Zeilen die "halloblubb" lauten löschen und sich dann ganz normal wieder ans Ende der Datei schreiben?
Also in etwa:
Batch Start ------
...
...
...
in txt.txt jede zeile mit %variable% löschen
%variable% >> txt.txt
Batch Ende
)
Ich hoffe, ich hab mich nich zu blöd ausgedrückt. :>
Dankeschön =)
(Hab leider keine Lösung in der Sufu gefunden. )
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 87237
Url: https://administrator.de/contentid/87237
Ausgedruckt am: 21.09.2024 um 01:09 Uhr
4 Kommentare
Neuester Kommentar
Hallo Anno##!
Versuch es etwa so:
Wenn Du die letzte Zeile weglässt, bleibt die Originaldatei als Sicherungskopie "D:\txt.txt.bak" erhalten.
Zum Ablauf: Nach dem Umbenennen (per "move" - dadurch wird auch gleich automatisch eine ev noch vorhandene alte Sicherungskopie gelöscht) der Originaldatei wird diese zeilenweise eingelesen und jede gelesene Zeile mit der neuen Datei verglichen (Diese ist am Anfang natürlich noch gar nicht vorhanden und daher würde der Batch ohne die Umleitung mit "2>nul" die Fehlermeldung "FINDSTR: D:\txt.txt kann nicht geöffnet werden." ausgeben). Wird die Zeile noch nicht in der neuen Datei gefunden, wird sie an diese angefügt.
Grüße
bastla
[Edit] "findstr"-Schalter "/c" ergänzt [/Edit]
Versuch es etwa so:
@echo off & setlocal
set "Datei=D:\txt.txt"
set "Bak=bak"
if not exist "%Datei%" echo %Datei% nicht gefunden! & goto :eof
move "%Datei%" "%Datei%.%Bak%"
@for /f "usebackq delims=" %%i in ("%Datei%.%Bak%") do findstr /x /c:"%%i" "%Datei%">nul 2>nul||echo %%i>>"%Datei%"
del "%Datei%.%Bak%"
Zum Ablauf: Nach dem Umbenennen (per "move" - dadurch wird auch gleich automatisch eine ev noch vorhandene alte Sicherungskopie gelöscht) der Originaldatei wird diese zeilenweise eingelesen und jede gelesene Zeile mit der neuen Datei verglichen (Diese ist am Anfang natürlich noch gar nicht vorhanden und daher würde der Batch ohne die Umleitung mit "2>nul" die Fehlermeldung "FINDSTR: D:\txt.txt kann nicht geöffnet werden." ausgeben). Wird die Zeile noch nicht in der neuen Datei gefunden, wird sie an diese angefügt.
Grüße
bastla
[Edit] "findstr"-Schalter "/c" ergänzt [/Edit]