Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3462 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Verschachtelte FOR-Schleife mit einem Argument (3)

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

Batch & Shell
For Schleife in einer .sh Datei (4)

Frage von CrystalFlake zum Thema Batch & Shell ...

Batch & Shell
Zwei Ergänzungen in einer For Schleife

Frage von charmeur zum Thema Batch & Shell ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Neue Wissensbeiträge
Firewall

PfSense Repository für Version 2.3.x

(2)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(4)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Windows 10

Microsoft veröffentlicht das "Fall Creators Update

(10)

Information von Penny.Cilin zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (20)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...