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, 8416 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 ..
Ähnliche Inhalte
Entwicklung
Mehrere Ordner per Script umbennenen (1)

Frage von wadimz zum Thema Entwicklung ...

Batch & Shell
gelöst Batch aktuellsten Ordner kopieren (2)

Frage von MmarKuss zum Thema Batch & Shell ...

Batch & Shell
gelöst Win7-Batch - bestimmte Ordner in TEMP löschen (1)

Frage von jan99 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Microsoft

Restrictor: Profi-Schutz für jedes Window

Tipp von AlFalcone zum Thema Microsoft ...

Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

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

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (15)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (15)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...