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, 3456 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 Abfrage ERRORLEVEL springt aus der FOR Schleife (8)

Frage von Galindiesel zum Thema Batch & Shell ...

Batch & Shell
gelöst Warum funktioniert das echo in meiner for-Schleife auch mit Sonderzeichen? (9)

Frage von Pedant zum Thema Batch & Shell ...

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

Frage von yperiu zum Thema Batch & Shell ...

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

Frage von rusdav zum Thema Batch & Shell ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Viren und Trojaner
Ransomware .nm4 (14)

Frage von Zyklo92 zum Thema Viren und Trojaner ...

Microsoft Office
+1.000 Ordner in Outlook: Wie besser? (11)

Frage von Matsushita zum Thema Microsoft Office ...

Zusammenarbeit
Administrator Verhalten nach Vertragskündigung (10)

Frage von sysbone zum Thema Zusammenarbeit ...