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, 3451 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
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
Batch & Shell
gelöst Verlinkung erstellen Batch Datei mit for Schleife (2)

Frage von rusdav zum Thema Batch & Shell ...

Batch & Shell
gelöst Verschachtelte FOR-Schleife mit einem Argument (3)

Frage von mp-home zum Thema Batch & Shell ...

Batch & Shell
Zwei Ergänzungen in einer For Schleife

Frage von charmeur zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (19)

Frage von Winuser zum Thema Hyper-V ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (14)

Frage von ProfessorZ zum Thema Router & Routing ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...