Eine Schleife erstellen um ein Verzeichnis zu löschen, wenn eine bestimte Datei in einem anderen Verzeichnis existiert
Hallo zusammen,
ich bin Anfänger beim Scriptprogrammieren und komme damit nicht zu Recht eine Prüfung in eine Schleife aufzubauen. Kann mir jemand bitte helfen einen Script zu erstellen. Danke im Voraus.
ich habe mehrere Benutzerverzeichnise, wo noch 2 Unterverzeichnissen existieren ( z.B H:\Userdaten\User_1\Ordner_Neu und H:\Userdaten\User_1\Ordner_alt). Das Verzeichnis H:\Userdaten\User_1\Ordner_alt darf nur dann gelöscht werden wenn eine Datei z.B File1.txt im anderen Verzeichnis H:\Userdaten\User_1\Ordner_neu existiert. Und am Schlüss müsste dieser Löschvorgang bei jedem Benutzerverzeichnisen ( H:\Userdaten\User_1......bis User_n) wiederholt werden.
ich bin Anfänger beim Scriptprogrammieren und komme damit nicht zu Recht eine Prüfung in eine Schleife aufzubauen. Kann mir jemand bitte helfen einen Script zu erstellen. Danke im Voraus.
ich habe mehrere Benutzerverzeichnise, wo noch 2 Unterverzeichnissen existieren ( z.B H:\Userdaten\User_1\Ordner_Neu und H:\Userdaten\User_1\Ordner_alt). Das Verzeichnis H:\Userdaten\User_1\Ordner_alt darf nur dann gelöscht werden wenn eine Datei z.B File1.txt im anderen Verzeichnis H:\Userdaten\User_1\Ordner_neu existiert. Und am Schlüss müsste dieser Löschvorgang bei jedem Benutzerverzeichnisen ( H:\Userdaten\User_1......bis User_n) wiederholt werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141398
Url: https://administrator.de/contentid/141398
Ausgedruckt am: 23.11.2024 um 03:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo wladislaw,
willkommen im Forum.
Die einfachste Strategie für diese Aufgabe wäre vermutlich,
Dazu brauchst du allerdings keinen Batch, sondern nur einen Halbzeiler vom CMD-Prompt.
Grüße
Biber
willkommen im Forum.
Die einfachste Strategie für diese Aufgabe wäre vermutlich,
- in allen Unterverzeichnissen unterhalb von "H:\Userdaten"
- die Existenz einer Datei "File1.txt"
- in einem End-Verzeichnis "Ordner_neu" zu prüfen
- und dann das Parallelverzeichnis "Ordner_alt" wegzubratzen, falls vorhanden.
Dazu brauchst du allerdings keinen Batch, sondern nur einen Halbzeiler vom CMD-Prompt.
for /r "H:\Userdaten" %i in (file1.txt) do @if exist %i @if exist "%~dpi..\Ordner_alt" rd "%~dpi..\Ordner_alt" /s /q
Grüße
Biber
Hallo Biber,
ich mag mich täuschen, aber stellt dein Einzeiler auch sicher das die Datei File1.txt in einem "Order_neu" ist?
Das mag akademisch klingen, aber wenn Ordner_alt auch parallel zu anderen Dateien File1.txt in Ordnern beliebigen Namens existiert,
würden die auch gelöscht.
ungetestet, wenn die Ausgabe richtig erscheint das echo entfernen.
Diese Zeile könnte zwar einige Stellen auswerfen wo kein Ordner_alt existiert, aber bis auf die Fehlermeldung schadet es ja nicht.
Gruß
LotPings
Edit: fehlendes ' nachgereicht
ich mag mich täuschen, aber stellt dein Einzeiler auch sicher das die Datei File1.txt in einem "Order_neu" ist?
Das mag akademisch klingen, aber wenn Ordner_alt auch parallel zu anderen Dateien File1.txt in Ordnern beliebigen Namens existiert,
würden die auch gelöscht.
For /f "delims=" %A in ('dir /B/S H:\Userdaten\File1.txt ^|Findstr /i "Ordner_neu\\File1\.txt$" ') Do @echo RD /S /Q "%~fA\..\..\Ordner_alt"
ungetestet, wenn die Ausgabe richtig erscheint das echo entfernen.
Diese Zeile könnte zwar einige Stellen auswerfen wo kein Ordner_alt existiert, aber bis auf die Fehlermeldung schadet es ja nicht.
Gruß
LotPings
Edit: fehlendes ' nachgereicht
@77559
... und um entsprechenden Gerüchten gleich entschiedenst entgegenzutreten: Die (allermeisten ) Fehler in meinen Batches baue ich nicht ein, um festzustellen, ob Ihr auch genau schaut ...
Auch Dir einen schönen Sonntagsrest
bastla
ist es nicht schön das wir aufeinander aufpassen
Finde ich auch ... ... und um entsprechenden Gerüchten gleich entschiedenst entgegenzutreten: Die (allermeisten ) Fehler in meinen Batches baue ich nicht ein, um festzustellen, ob Ihr auch genau schaut ...
Auch Dir einen schönen Sonntagsrest
bastla
Moin Lord und Moin bastla,
natürlich, ich habe das Wichtigste (oder zumindest das Witzigste) vergessen... unterstützte Syntax, auf die man/frau erstmal gar nicht kommt.
--> den Teilpfad in der Klammer hatte ich irgendwie wieder wegeditiert, weil ich das (unwichtigere) "Alt-Verzeichnis erst auf EXIST prüfen, dann löschen" noch reineditiert habe.
Dabei wäre DAS mir bei einem CMD-Schnellschuss vollkommen egal.
Aber ich finde es auch schön, wie wir hier aufeinander aufpassen.
Grüße
Biber
natürlich, ich habe das Wichtigste (oder zumindest das Witzigste) vergessen... unterstützte Syntax, auf die man/frau erstmal gar nicht kommt.
for /r "H:\Userdaten" %i in (Ordner_neu\file1.txt) do @if exist %i @if exist "%~dpi..\Ordner_alt" rd "%~dpi..\Ordner_alt" /s /q
Dabei wäre DAS mir bei einem CMD-Schnellschuss vollkommen egal.
Aber ich finde es auch schön, wie wir hier aufeinander aufpassen.
Grüße
Biber