Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

NOT in FOR-Schleife?

Frage Entwicklung Batch & Shell

Mitglied: blue0711

blue0711 (Level 2) - Jetzt verbinden

26.06.2009, aktualisiert 14:54 Uhr, 3445 Aufrufe, 4 Kommentare

Verzeichnisse, die NICHT einer Liste entsprechen, sollen gelöscht werden

Hallo an die Batch-Bastler,

nach etwas Suche hab ich kapiert, wie ich Verzeichnisse löschen kann, die vorher in einer Text-Datei gespeichert wurden:

For /f "tokens=1" %%i IN (folders.txt) DO (
rmdir %%i /DELETE
)

Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden.
Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)

Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.

Ich hab mich auch schon an FOR /R probiert, da man da ja den Pfad angeben kann, innerhalb dessen abgearbeitet wird, komme da aber auch nicht recht weiter.

Könnte da jemand "Starthilfe" geben?

Gruß
kai
Mitglied: bastla
26.06.2009 um 15:04 Uhr
Hallo blue0711!

Wenn in der Datei "D:\DieNicht.txt" die vollständigen Pfade der nicht zu löschenden Ordner des Ausgangsordners "D:\Der Ordner" stehen, dann etwa so:
for /d %%i in ("D:\Der Ordner\*.*") do findstr /i "%%~fi" "D:\DieNicht.txt">nul || echo rd /s /q "%%i"
Wegen des "echo" vor dem "rd" werden die Löschbefehle (zum Testen) nur angezeigt, aber noch nicht ausgeführt.

Grüße
bastla

[Edit] @LotPings: Wusste ich doch, dass ich "findstr /G" Dir überlassen sollte ... [/Edit]
Bitte warten ..
Mitglied: LotPings
26.06.2009 um 15:05 Uhr
Zitat von blue0711:
Jetzt hätt ichs aber gern umgekehrt, die Verzeichnisse in der Datei sollen stehen bleiben, alles andere gelöscht werden. Aber ein NOT geht ja hier nicht. (Wär ja auch zu einfach für einen Progg-DAU wie mich)

Das ganze passiert nur in einem Verzeichnis mit mehreren Unterverzeichnis, von denen halt die vorgegebenen stehen bleiben sollen.

Hallo Kai,
versuch mal dies (ungetestet):
01.
Pushd C:\Anfangsverzeichnis 
02.
For /f "delims=" %%i IN (' Dir  /B /S /AD ^| findstr /i /V /G:folders.txt ') DO ( 
03.
Echo rmdir "%%i" 2>NUL 
04.
05.
Popd
Wenn die Ausgabe korrekt erscheint das Echo vor rmdir entfernen.
Der Befehl rmdir oder kürze rm hat nur die Optionen /S /Q, da gibts es kein /Delete.

Gruß
LotPings

Edit Option /i im findstr zugefügt, Fehler entsorgt, bastlas Anregung eingebaut.t
Bitte warten ..
Mitglied: bastla
26.06.2009 um 15:17 Uhr
@LotPings
Dem rmdir "%%i" könntest Du noch ein 2>nul spendieren (für den Versuch, schon gar nicht mehr vorhandene Unter-Unterordner zu löschen) ...

Grüße
bastla
Bitte warten ..
Mitglied: blue0711
26.06.2009 um 17:35 Uhr
Suppi, danke,

funktioniert prima

... das mit dem /DELETE war ein copy&paste-Fehler ... - pfeiff -
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst CMD: icacls in for-Schleife (2)

Frage von Lowrider614 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst For Schleife kaputt? (5)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...