dressler18
Goto Top

Doppelte Zeilen aus .txt löschen

Hallo,

ich habe ein Script auf unserem Fileserver das rekursiv nach leeren Ordnern sucht und diese dann löscht. Der Vollständigkeit halber wollte ich eine Logdatei erstellen die, die gelöschten Ordner enthält.

set pfad="E:\shares\Daten\Transfer\"  
set vorher="E:\shares\Daten\Transfer\Logs\vorher.txt"  
set nachher="E:\shares\Daten\Transfer\Logs\nachher.txt"  
set logdatei="E:\shares\Daten\Transfer\Logs\geloeschte_verzeichnisse.log"  



rem #######Programm#######

dir %pfad% /ad /s /b >%vorher%

for /F "delims=" %%d in ('dir %pfad% /s /b /ad ^| sort /r') do rd "%%d" >nul  

dir %pfad% /ad /s /b >%nachher%



rem #######LOGDATEI#######

echo --------------Geloeschte leere Verzeichnisse-------------- >%logdatei%
echo ---------------------------------------------------------- >%logdatei%
echo Geloeschte Verzeichnisse					Datum/Uhrzeit				Server >%logdatei%
echo -----------------------					%date%/%time%			%computername% >%logdatei%
echo. >%logdatei%
echo. >%logdatei%
Die Suchfunktion hat mir zwar einige Ergebnisse geliefert, jedoch bin ich aus den Suchergebnissen nicht schlau geworden.
Versucht habe ich es mit folgender Zeile
fc /C %vorher% %nachher% >%logdatei%
dieser kleine Befehl lieferte mir zwar schon fast das richtige Ergebnis jedoch sollten noch die doppelten Einträge daraus gelöscht werden. Wenn jemand einen einfacheren (oder komplett anderen) Weg hat dies zu realisieren bin ich natürlich dafür offen.

Im Falle das es einen längeren komplizierteren Code benötigt, wäre ich froh wenn ihr gleich eine kleine Erklärung dazuschreiben könnt face-smile.

Vielen Dank.

LG
Florian

Content-Key: 193190

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

Printed on: April 18, 2024 at 13:04 o'clock

Member: bastla
bastla Oct 23, 2012 updated at 19:01:34 (UTC)
Goto Top
Hallo dressler18!

Mit "fc" kannst Du nur prüfen, ob die Dateien unterschiedlich sind - sinnvoll, da es ja auch möglich wäre, dass keine Ordner gelöscht wurden. Ungetestet etwa so:
(fc "%vorher%" "%nachher%">nul && (  
    echo Keine Verzeichnisse geloescht!
) || (
    findstr /vxg:"%nachher%" "%vorher%"  
))>>"%logdatei%"  

Grüße
bastla
Member: dressler18
dressler18 Oct 24, 2012 at 12:42:58 (UTC)
Goto Top
Hallo Bastla,

hat super funktioniert! Ich musste aber die Option /x bei findstr entfernen, weil ich sonst auch doppelte Ordnernamen in der Logdatei hatte die auch nicht gelöscht wurden.

Nochmals Vielen Dank.

LG