gelöst Batch mehrere Ordner bei Löschvorgang ausschließen

Mitglied: Kim

Kim (Level 1) - Jetzt verbinden

28.10.2008, aktualisiert 30.10.2008, 9297 Aufrufe, 5 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):
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
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:
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
config.ini
Gruß Kim
Bitte warten ..
Mitglied: ruedi1234
16.08.2018, aktualisiert um 07:32 Uhr
Hallo allerseits,
der Beitrag ist schon etwas älter aber als Hinweis für alle die das auch gebrauchen können und Windows 8.1 einsetzen:
aus einem mir unerfindlichen Grund funktioniert
dies unter Windows 8.1 nicht mehr. Nach langem probieren bin ich darauf gestoßen, das der Übeltäter die findstr Funktion ist.
Wenn man den Parameter "/x" wegläßt klappt es, sonst nicht. Laut "findstr /?" Aufruf bedeutet " /X Gibt Zeilen aus, die vollkommen übereinstimmen." Bei meinem Test stimmte der Text vollkommen überein, nur daß nichts gefunden wurde, sprich keine Ausgabe erfolgte.
An den " Anführungszeichen kann es auch nicht liegen, denn ich habe es versuchshalber mit Suchbegriffen mit ganzen Wörtern probiert.

So geht es:
Nachtrag:
Ich hatte gedacht die Lösung gefunden zu haben - irgendwie hat findstr eine Macke unter Windows 8.1:
ein einfacher Test funktioniert mit test.txt Inhalt:
test2
test3
test4
jedoch wenn ich mit kompletten Pfaden arbeiten will geht auch dies nicht mehr

Hat vielleicht jemand eine Lösung ohne findstr die utner W8.1 läuft ?

Gruß Rüdi
Bitte warten ..
Heiß diskutierte Inhalte
Router & Routing
Lancom Router Site to Site Problem mit Außenstellen
gelöst mossoxFrageRouter & Routing24 Kommentare

Guten Tag zusammen, in der Hauptgeschäftsstelle nutzen wir einen Lancom 1781VA Router und haben i.d.R. zwei gleichzeitige IPSec Site ...

Netzwerke
Sporadische Ausfälle im gesamten Heimnetz
gelöst bilbo-dvdFrageNetzwerke20 Kommentare

Guten Morgen, ich habe einen Kabelanschluss bei Vodafone und mein Tarif wurde im März auf CableMax 1000 umgestellt. Ich ...

Sicherheit
Sicherheit oder bessere Benutzbarkeit?
gelöst StefanKittelFrageSicherheit19 Kommentare

Hallo, ich habe eine Webanwendung programmiert und sehe mich nun mit einer Frage zur Benutzbarkeit konfrontiert. Bei der Anmeldung ...

Router & Routing
RDP nur im internen Netz möglich nicht aber per vpn?
einfach112FrageRouter & Routing18 Kommentare

Hallo zusammen. Beim Kunden habe ich einen Server mit VMWARE laufen. Darauf ein Windows Server 2016 Essentials als VM ...

Apache Server
Wer installiert mir Jitsi-meet mit Stun- Turn-Server und wartet dies?
gelöst default-userFrageApache Server16 Kommentare

Nachdem ich mit der Audio- und Videoqualität der meisten angebotenen Videokonferenz-Lösungen nicht zufrieden bin, möchte ich einen eigenen Jitsi-meet-Server ...

Internet
Über meinen WAN ist lidl.de nicht ereichbar
gelöst NetGodFrageInternet16 Kommentare

Hallo zusammen, mit meinem DTAG-Anschluß ist derzeit kein Durchkommen zu www.lidl.de möglich. Zu den selben Zeitpunkten ist es aber ...

Ähnliche Inhalte
Batch & Shell

Batch - IF - mehr als eine Datei eines bestimmten Typs

gelöst zimbosmurfFrageBatch & Shell9 Kommentare

Hallo! Ich möchte in einer Batchdatei eine Datei eines bestimmten Typs verarbeiten. Hierfür hole ich mir mit for %%G ...

Batch & Shell

Batch Datei verschieben, wenn sie 15min nicht mehr bearbeitet wurde

gelöst VollmilchheiniFrageBatch & Shell3 Kommentare

Hallo zusammen, ich habe ein Skript, dass PDF-Dateien aus einem Netzwerklaufwerk auf einen anderen Rechner in der Domäne verschiebt. ...

Windows Netzwerk

Netzlaufwerk Windows 10 geht trotz batch-script nach herunterfahren nicht mehr

gelöst coltseaversFrageWindows Netzwerk4 Kommentare

Hallo zusammen, ich habe bei einem Windows 10 -PC im Netzwerk das Problem, dass das Netzlaufwerk (ebenfalls auf einem ...

Batch & Shell

Batch - Kopierjob

Goldenone95FrageBatch & Shell8 Kommentare

Hallo Community, leider weiß ich bezüglich einer Batch-Datei zum Kopieren und Ersetzen einer Datei in einem anderen Verzeichnis nicht ...

Batch & Shell

Kopfschmerzen (Batch)

gelöst clragonFrageBatch & Shell4 Kommentare

"" " Kann syntaktisch an dieser Stelle nicht verarbeitet werden Ich sterbe während die Flammen meiner Rage mich innerlich ...

Entwicklung

Batch - Überprüfung

gelöst apex.predator24FrageEntwicklung6 Kommentare

Hallo Zusammen Gibt es eine Möglichkeit, einen Prozess im TaskManager über eine Batch-Datei zu überprüfen ob dieser läuft oder ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud