Dateien / Verzeichnisse löschen, außer...
ich möchte Dateien / Verzeichnisse per Batch löschen, aber mit einer Art Auschlussliste vergleichbar dem /EXCLUDE: - Schalter von XCOPY
Hallo zusammen,
ich habe ein kleines Problem, wo ich nicht mehr weiterkomme.
ich habe ein Stammverzeichnis, in dem Benutzerprofile liegen. Aus diesen Benutzerprofil-Pfaden möchte ich jeweils aus dem Ordner "Eigene Dateien" alles außer 3 bestimmte Ordner rauslöschen.
Wie kann ich das möglichst einfach per Batch-Datei machen?
im XCOPY gibt es den EXCLUDE-Schalter mit dem man eine Auschlussliste definieren kann. Im Prinzip such ich sowas für DEL bzw für RD
Vielen Dank für die Hilfe
gruß kugman
Hallo zusammen,
ich habe ein kleines Problem, wo ich nicht mehr weiterkomme.
ich habe ein Stammverzeichnis, in dem Benutzerprofile liegen. Aus diesen Benutzerprofil-Pfaden möchte ich jeweils aus dem Ordner "Eigene Dateien" alles außer 3 bestimmte Ordner rauslöschen.
Wie kann ich das möglichst einfach per Batch-Datei machen?
im XCOPY gibt es den EXCLUDE-Schalter mit dem man eine Auschlussliste definieren kann. Im Prinzip such ich sowas für DEL bzw für RD
Vielen Dank für die Hilfe
gruß kugman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 37028
Url: https://administrator.de/contentid/37028
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
4 Kommentare
Neuester Kommentar
Hmmm, kugman,
etwas zumindest wirkungsvolles (wenn auch nicht nobelpreisverdächtiges) lässt sich über den Attrib-Befehl machen.
- die drei Dateien, die NICHT gelöscht werden sollen, vorher auf "unsichtbar"/Hidden setzen.
[im Batch mit
Attrib +h x:\Pfad1\datei1.xyz
Attrib +h y:\Pfad2\datei2.xyz
...]
- alle Dateien löschen mit del *.* A:-H /y [alles außer versteckten; ohne Bestätigung]
-Attribut der drei Dateien wieder auf "normal" setzen.
[im Batch mit
Attrib -h x:\Pfad1\datei1.xyz
Attrib -h y:\Pfad2\datei2.xyz
...]
Und die Namen der Dateien wiederum kannst Du ja aus einer Liste, also einer Textdatei holen statt sie fest einzugebrennen im Batchschnipsel.
So die Skizze.
Gruß
Biber
etwas zumindest wirkungsvolles (wenn auch nicht nobelpreisverdächtiges) lässt sich über den Attrib-Befehl machen.
- die drei Dateien, die NICHT gelöscht werden sollen, vorher auf "unsichtbar"/Hidden setzen.
[im Batch mit
Attrib +h x:\Pfad1\datei1.xyz
Attrib +h y:\Pfad2\datei2.xyz
...]
- alle Dateien löschen mit del *.* A:-H /y [alles außer versteckten; ohne Bestätigung]
-Attribut der drei Dateien wieder auf "normal" setzen.
[im Batch mit
Attrib -h x:\Pfad1\datei1.xyz
Attrib -h y:\Pfad2\datei2.xyz
...]
Und die Namen der Dateien wiederum kannst Du ja aus einer Liste, also einer Textdatei holen statt sie fest einzugebrennen im Batchschnipsel.
So die Skizze.
Gruß
Biber
Wenn es sich nur auf komplette Verzeichnisse beziehen soll, dann kannst Du es noch etwas vereinfachen, um dieses schwer wartbare....
ein bisschen einzudampfen.
Lege die Zeilen, in denen Du bisher die %ORDNER1...5% definierst, als 5 Testzeilen in eine ExcludeDirs.txt in irgendeinen Pfad.
:----ExcludeDirs.txt
:: User-Unterverzeichnisse, die NICHT gelöscht werden solen.
Adobe
IBM
Recycler
BlaBlaBla
Eigene Datenquellen
:----ExcludeDirs.txt
Dann kannst Du statt
....do ( if not "%%i" == "%ORDNER1%" if not "%%i" == "%ORDNER2%" if not "%%i" == "%ORDNER3%" if not "%%i" == "%ORDNER4%" if not "%%i" == "%ORDNER5%" echo "%%i">>%%1_loschen.txt )) & (FOR /F "delims=\" %%l in (%%1_loschen.txt) do rd ...
Lege die Zeilen, in denen Du bisher die %ORDNER1...5% definierst, als 5 Testzeilen in eine ExcludeDirs.txt in irgendeinen Pfad.
:----ExcludeDirs.txt
:: User-Unterverzeichnisse, die NICHT gelöscht werden solen.
Adobe
IBM
Recycler
BlaBlaBla
Eigene Datenquellen
:----ExcludeDirs.txt
Dann kannst Du statt
....do (if not dies if not das.....usw..usw... .. DO rd .....
dieses hier unten schrieben:...heisst: Nur wenn das Verzeichnis NICHT in der ExcludeDirs.txt gefunden wird, dann wird es gelöscht.
Ist ein bisschen wartbarer und Du hast nicht jeden einzelnen Ordner mitten im Spaghetti-Sourcecode stehen. Denn (soweit ich gehört habe) könnte eine Fehlermeldung "Syntaxfehler" in einem einzeiligen Batch eine abendfüllende Suche bedeuten, wenn die Zeile ein paar tausend Zeichen lang ist... *gg
Funktionieren wird Dein Schnipsel aber auch, ohne Frage, von daher setze bitte den Beitrag ruhig auf "Gelöst", wenn keine Fragen mehr offen sind.
Gruß
Biber