derjuice
Goto Top

Laufwerk Inhalt löschen bis auf bestimmte Ordner und Dateien

Hallo Zusammen,

Ich habe versucht die Variante von bastla aus einem alten Thread für mich anzupassen. Ich möchte später mal auf einen Netzlaufwerk alle Ordner bis auf 5-6 bestimmte löschen lassen.
Schritt 2 wäre dann Dateien die auf dem Laufwerk liegen und in keinem Ordner sind zu löschen bis auf ein-zwei Ausnahmen.

In meinem Test möchte ich die Ordner muster, test2, office behalten und alle anderen im Verzeichnis Test1 löschen

@echo off & setlocal
set "Ordner=C:\Test1"  
set "Behalten=§muster§test2§office§"  
for /d %%i in ("%Ordner%\*.*") do echo "%Behalten%"|findstr /i "§%%~nxi§">nul|| echo rd /s /q "%%i"  
pause

Ergebnis des Echos:

Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
rd /s /q "C:\Test1\muster"
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
rd /s /q "C:\Test1\office"
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
rd /s /q "C:\Test1\test1"
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
rd /s /q "C:\Test1\test2"
Drücken Sie eine beliebige Taste . . .

lösche ich das letze Echo sprich das vor rd erscheint:

Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
Zeichenfolgenzählfehler: (0 ist nicht gleich 1)
Drücken Sie eine beliebige Taste . . .

und nur das Verzeichnis Test2 ist noch vorhanden alles andere wurde gelöscht.

Ich finde den Fehler gerade nicht und wäre Dankbar für Eure Hilfe.
Falls jemand noch eine Idee hat wie ich Schritt2 noch unterbekomme wäre ich auch sehr dankbar face-smile

Vielen Dank

gruß
Stefan

Content-Key: 177974

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

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

Mitglied: 60730
60730 Dec 21, 2011 at 11:43:43 (UTC)
Goto Top
moin,

zeile 1.... (ich weiß das macht Bastla absichtlich)...

Zeichenfolgenzählfehler: (0 ist nicht gleich 1)== "§"

C:\>dir /b c:\test1
amwechsten
test.cmd
test2
wech
wecher

set "Ordner=C:\Test1"  
set "Behalten=zyxmusterzyxtest2zyxofficezyx"  
for /d %%i in ("%Ordner%\*.*") do echo "%Behalten%"|findstr /i "zyx%%~nxizyx">nul|| rd /s /q "%%i"  
pause

C:\>c:\test1\test.cmd

C:\>set "Ordner=C:\Test1"

C:\>set "Behalten=zyxmusterzyxtest2zyxofficezyx"

C:\>for / %i in ("C:\Test1\*.*") do echo "zyxmusterzyxtest2zyxofficezyx"  | find
str /i "zyx%~nxizyx" 1>nul  || rd /s /q "%i"

C:\>echo "zyxmusterzyxtest2zyxofficezyx"  | findstr /i "zyxamwechstenzyx" 1>nul
 || rd /s /q "C:\Test1\amwechsten"

C:\>echo "zyxmusterzyxtest2zyxofficezyx"  | findstr /i "zyxtest2zyx" 1>nul  || r
d /s /q "C:\Test1\test2"

C:\>echo "zyxmusterzyxtest2zyxofficezyx"  | findstr /i "zyxwechzyx" 1>nul  || rd
 /s /q "C:\Test1\wech"

C:\>echo "zyxmusterzyxtest2zyxofficezyx"  | findstr /i "zyxwecherzyx" 1>nul  ||
rd /s /q "C:\Test1\wecher"

C:\>pause
Drücken Sie eine beliebige Taste . . .

C:\>dir /b c:\test1
test.cmd
test2

C:\>
Member: derjuice
derjuice Dec 21, 2011 at 13:55:45 (UTC)
Goto Top
Hallo TimoBeil,

vielen Dank!. Wenn ich das richtig sehe liegt es also am § Zeichen, werden Sonderzeichen nicht erkannt oder ist ein Zeichen zuwenig (damit ich das für die Zukunft weiß).

Für Schritt 2 (Dateien die direkt im Laufwerk liegen bis auf Ausnahmen löschen) habe ich versucht anhand von anderen Beispielen etwas zuschreiben.

set "dBehalten"=.!test.bad.!test2.bat.!kill.exe.!Killnotes.exe.!"  
for /f "delims=" %%i in ('dir /b /a-d "%Ordner%"^do echo "%dBehalten%|findstr /v /b ".!%%~nxi.!"') do echo del "%%i"  
pause


funktioniert nicht....wird wohl auch komplett falsch von mir sein face-sad
Könnte bitte nochmal jemand einen Blick draufwerfen?

Danke!
Member: bastla
bastla Dec 21, 2011 at 16:05:46 (UTC)
Goto Top
Hallo derjuice!

Ja, liegt am "§" (wobei ich nicht wirklich weiß, warum face-sad) - wenn Du stattdessen ":" verwendest (kann in einem Datei-/Ordnernamen nicht vorkommen und ist daher als Trennzeichen geeignet), sollte das dann wieder klappen ...
Für die Be- (oder Miss- face-smile)handlung von Dateien sähe das etwa so aus:
set "dBehalten=:test.bad:test2.bat:kill.exe:Killnotes.exe:"  
for /f "delims=" %%i in ('dir /b /a-d "%Ordner%"') do echo "%dBehalten%"|findstr /i ":%%~i:">nul||echo del /f "%Ordner%\%%~i"  
Grüße
bastla
Member: derjuice
derjuice Dec 22, 2011 at 07:11:04 (UTC)
Goto Top
Vielen Dank an euch Beide!
Funktioniert !
Wünsche euch frohe und besinnliche Feiertage