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

Batch mehrere Ordner bei Löschvorgang ausschließen

Frage Microsoft Windows Tools

Mitglied: Kim

Kim (Level 1) - Jetzt verbinden

28.10.2008, aktualisiert 30.10.2008, 8296 Aufrufe, 4 Kommentare

Ich habe in einem Ordner z.B. unter C:\temp 20 Ordner, die ich aufräumen will.

In meiner ini Datei stehen die Ordner, die ich nicht gelöscht haben will, der Rest soll gelöscht werden.

ini-Datei

ordner1=xyz1
ordner2=xyz2
ordner3=xyz3
ordner4=xyz4

Wie ich diese Ordner aus der ini Auslese ist mir klar:

for /f "delims== tokens=1,2" %%i in ('findstr "ordner1" config.ini') do @SET ordner1=%%j
.
.
.

Da aber das DOS Tool del keinen Ausschluss vorsieht, suche ich nach einer Möglichkeit wie ich mein Problem lösen kann.

Verschieben ist keine Lösung, da viel zu Zeitaufwendig (mehrere Hunderttausende Dateien).

Eine andere Möglichkeit habe ich noch nicht gefunden.

Bin für jede Hilfe dankbar.

Grüße
Kim
Mitglied: bastla
28.10.2008 um 16:19 Uhr
Hallo Kim!

Bei nur 20 Ordnern wäre es vermutlich sicherer (und auch nicht viel aufwändiger), die zu löschenden Ordner festzulegen ...

Trotzdem: Wenn Deine "config.ini" nur die Ordnernamen enthielte (was einen Vergleich der gesamten Zeile möglich machte), würde ich das etwa so versuchen (das "echo" vor dem "del" soll ein gefahrloses Testen erlauben):
for /d %%i in ("C:\Temp\*.*") do @findstr /i /x /c:"%%i" "config.ini">nul || echo del "%%i" /s /q
Zu beachten wäre, dass nur exakte Übereinstimmung des in der "config.ini" angegebenen Pfades zum Ausschluss führt, also ein Eintrag "Dieser Ordner" einen existierenden Ordner "Dieser Ordner auch" nicht ausschließen würde (was sich allerdings durch den Ersatz des Schalters "/x" durch "/b" erreichen ließe). Achtung auch auf zB zusätzliche Leerzeichen am Zeilenende (da dadurch ebenfalls keine Übereinstimmung mehr gegeben wäre)!

Grüße
bastla

[Edit] Bei Angabe des Ordners ("C:\Temp") im "for /d" muss die Ordnerliste in "config.ini" den vollständigen Pfad (also zB "C:\Temp\xyz1") enthalten, oder die "findstr"-Schreibweise auf
findstr /i /x /c:"%%~nxi" "config.ini"
geändert werden. [/Edit]
Bitte warten ..
Mitglied: Kim
29.10.2008 um 08:09 Uhr
Komisch, kriege andauernd diesen Fehler, wenn ich aber findstr in der console eingebe funktionierts, in anderen Batches läuft der Befehl auch. :S

'findstr' is not recognized as an internal or external command, operable program or batch file.#

Hier noch die Batch und die ini-Datei

test.cmd
for /d %%i in ("C:\temp\test\*.*") do @findstr /i /x /c:"%%i" "config.ini">nul || echo del "%%i" /s /q

oder

test2.cmd
for /d %%i in ("C:\temp\test\*.*") do @findstr /i /x /c:"%%~nxi" "config.ini">nul || echo del "%%i" /s /q

config.ini:
C:\temp\test\1
C:\temp\test\3
C:\temp\test\5
C:\temp\test\7
C:\temp\test\9

hab schon ein bisschen Rumgespielt, aber will net laufen

Gruß
Kim
Bitte warten ..
Mitglied: bastla
29.10.2008 um 11:07 Uhr
Hallo Kim!

Zu Deinem "findstr"-Problem fällt mir auf die Schnelle nix ein, außer das Ganze direkt aus der Console zu starten:
for /d %i in ("C:\temp\test\*.*") do @findstr /i /x /c:"%i" "config.ini">nul || @echo del "%i" /s /q
wobei noch anzumerken wäre, dass die "config.ini" entweder im aktuellen Verzeichnis liegen muss oder, besser, mit vollständigem Pfad (etwa: "C:\Scripts\config.ini") anzugeben wäre.

Grüße
bastla
Bitte warten ..
Mitglied: Kim
30.10.2008 um 11:45 Uhr
Hallo bastla,

vielen Dank für die ganze Arbeit!

Problem ist gelöst und läuft sauber, musste Datei löschen und erneut schreiben (Windows is da irgendwie panne, naja anderes Thema ;))

Hier der funktionierende Code:

delete_dir.cmd
01.
for /d %%i in ("C:\temp\test\*") do @findstr /i /x /c:"%%i" "C:\temp\config.ini">nul || @rmdir "%%i" /S /Q
config.ini
01.
C:\temp\test\1 
02.
C:\temp\test\3 
03.
C:\temp\test\5
Gruß Kim
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Google Android
gelöst GMail: Mehrere Ordner synchronisieren (2)

Frage von honeybee zum Thema Google Android ...

Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...