watchdogg
Goto Top

Alle Dateien löschen, die nicht in Textdatei stehen

Hallo Leute,

wie der Titel schon sagt, möchte ich gern alle Dateien in einem Verzeichnis löschen, welche nicht in der Textdatei aufgelistet sind.

Hier gibt es ja schon eine gute Lösung:

Ausgewählte Dateien via Batch-Datei löschen

Es ist nur so:

In der Textdatei stehen aktuelle Dateien, d.h.
es greifen andere User auf diese Dateien, die in der Textdatei stehen zu.
Ich kann diese also nicht verschieben, so wie es im angegebenen Beitrag steht.

Meine Frage ist nun, kann ich die Dateien die NICHT in der Textdatei stehen irgendwie direkt verschieben, ohne die anderen Dateien temporär zu verschieben?

Vielen Dank,

MfG watchdogg

Content-Key: 117439

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

Printed on: April 26, 2024 at 06:04 o'clock

Mitglied: 77559
77559 Jun 04, 2009 at 08:22:14 (UTC)
Goto Top
Hallo watchdogg,

versuchs mal hiermit (Es ist Unklar ob du jetzt löschen oder verschieben willst)

@Echo off
Set "Base=C:\Test\Löschen"  
Set "Dest=C:\Test\Verschieben\"  
Set "Ausnahmen=C:\Test\Ausnahmen.txt"  
Pushd "%Base%"  
For /F "Delims=" %%A in (  
  'Dir /B * ^|Findstr /V /I /G:"%Ausnahmen%" '  
    ) Do Echo DEL/Move %%A "%Dest%"  
POPD

Ungetestet, den DO Teil kannst du wenn die Ausgabe per Echo passt entsprechend anpassen.

Gruß
LotPings
Member: watchdogg
watchdogg Jun 04, 2009 at 13:07:56 (UTC)
Goto Top
@77559

1000 Dank erstmal,

funktioniert super, nur noch ein kleineres Manko:
Wenn in der "Ausnahmen.txt" beispielsweise:
bla
blubb
steht.
Dann würde er alle Dateien, die diese Zeichenkette im Dateinamen beinhalten,
Also beispielsweise:
bla
blubb
xblubb
blase
blackout
blubberei
...und andere äußerst sinnfreie zeichenketten...
nicht verschieben.
Besser wäre es wenn er nur:
bla
blubb
stehen lassen würde.

Habe es schon mit der findstr - Option c: probiert. Bisher jedoch ohne Erfolg.

MfG watchdogg
Mitglied: 77559
77559 Jun 04, 2009 at 14:33:03 (UTC)
Goto Top
Deine sinnfreien Beispiele helfen mir nicht weiter,
wie erstellst du denn die Ausnahmen?

Wenn die Dateinamen vol übereinstimmen müssen, setze in die Ausnahmen Datei ein
^vor und hinter die Namen ein $

Das sind RegEx Anker für Zeilenanfang und -ende.

Gruß
LotPings
Member: watchdogg
watchdogg Jun 05, 2009 at 05:37:55 (UTC)
Goto Top
Hab das mit den RegEx Ankern so gelöst:


@echo off
for /f %%i in (quelle.txt) do echo ^%%i$>>ziel.txt


Und dann deinen oberen Code verwendet --> klappt wunderbar.

Ich danke dir wie verrückt LotPings.
Mitglied: 77559
77559 Jun 05, 2009 at 07:16:31 (UTC)
Goto Top
Freut mich wenns klappt watchdogg.

Wäre auch schön wenn du den Beitrag auf gelöst setzen würdest.

Gruß
LotPings