stichy
Goto Top

Bestimmte Ordner Suchen und Löschen

Hallo Community,

hab hier schon fleisig im Bereich Batch&Shell gesucht und auch einige nützliche Sachen gefunden aber mir fehlen noch die letzten 5% bis zum Ziel. Wollte jetzt nicht deswegen einen neuen Beitrag aufmachen. Vielleicht kannst du mir weiterhelfen. Folgende Situation.
Habe eine Ordnerstruktur (Tiefe zwischen 4 und 8). Diese Struktur wird immer dann kopiert wenn ein neues Projekt begonnen wird.

xcopy C:\Projekt_xx C:\Projekt_yy /T /E

Die kopierte Ordnerstruktur schaut so in etwa aus:
Projekt_yy\Ordner_A\Version1.0\
Projekt_yy\Ordner_A\Version2.1\
Projekt_yy\Ordner_B\Version0.2\
Projekt_yy\Ordner_B\Version1.5\
Projekt_yy\Ordner_C\Ordner_D\Version1.0\
usw.

Möchte in der kopierten Ordnerstruktur alle Ordner löschen, die mit Version... beginnen.

Befehl steht in Batchdatei:
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd /s /q %%i

jetzt werden alle Ordner angezeigt in denen sich ein Ordner mit Version... befindet aber nicht gelöscht.

Wie muss der Befehl ausschauen, damit diese auch gelöscht werden. Ich hoffe du kannst mir helfen.

Danke.

Gruß stichy

Content-Key: 127814

Url: https://administrator.de/contentid/127814

Printed on: April 16, 2024 at 14:04 o'clock

Member: TsukiSan
TsukiSan Oct 23, 2009 at 14:39:49 (UTC)
Goto Top
ersetze
@echo
durch
del

dann löscht "es".

Gruß
Tsuki
Member: stichy
stichy Oct 23, 2009 at 16:05:29 (UTC)
Goto Top
Hallo TsukiSan,

wenn ich folgenden Befehl
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd /s /q %%i
wird folgendes im CMD Fenster angezeigt:
rd /s /q E:\batch_test\Brenner\BurnAware\Version2.3.8
rd /s /q E:\batch_test\Brenner\BurnAware\Version2.4.0
rd /s /q E:\batch_test\Brenner\CDBurnerXP\Version4.2.006.1748
rd /s /q E:\batch_test\Brenner\FinalBurner\Version2.13.0.200
rd /s /q E:\batch_test\Brenner\ImgBurn\Version2.5.0.0
rd /s /q E:\batch_test\Brenner\InfraRecorder\Version0.50.0
rd /s /q E:\batch_test\Browser\Apple
rd /s /q E:\batch_test\Browser\Avant
rd /s /q E:\batch_test\Browser\Chrome\Version4.0.220.01Beta
rd /s /q E:\batch_test\Browser\Opera\Version10.00Build01750
rd /s /q E:\batch_test\Browser\Opera\Version10.10Build01833Unite

habe nun den Befehl abgewandelt wie du beschrieben hast
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do del rd /s /q %%i
wird folgendes im CMD Fenster angezeigt:
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\Browser\Apple konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\Browser\Avant konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden
E:\batch_test\rd konnte nicht gefunden werden

Ich hoffe das hilft jetzt etwas weiter.
Mitglied: 60730
60730 Oct 23, 2009 at 17:45:48 (UTC)
Goto Top
n abend

wenn ich folgenden Befehl
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd /s /q %%i
habe nun den Befehl abgewandelt wie du beschrieben hast
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do del rd /s /q %%i

Nimm beide Zeilen - kopiere Sie in je eine neue Textdatei und gib dann in einer Dosbox
fc datei1.txt datei2.txt
ein face-wink

Oder einfacher:
do del rd?
do rd!

Gruß

btw: Bastla & Biber - die für diese Schreibweise do echo bekannt sind - schreiben das mit dem "Echo - zu Testzwecken" auch immer dazu.
Member: stichy
stichy Oct 23, 2009 at 17:56:01 (UTC)
Goto Top
Hallo TimoBeil,

vielleicht steh ich gerade auf dem Schlauch. Hab den fc Befehl durchgeführt. Es werden beide Textdateien miteinander verglichen. Das habe ich zumindest schon einmal herausgefunden. Wie hilft mir denn jetzt das ganze weiter? Sorry, für die vielleicht blöde Frage. Aber ich komm nicht weiter.

Es sollen einfach in dem Ordner + mehrerer Unterordner einfach alle Ordner gelöscht werden, die mit "Version..." beginnen.
Die "Version.." Ordner sind ohne Inhalt.

Gruß stichy
Mitglied: 60730
60730 Oct 24, 2009 at 15:02:53 (UTC)
Goto Top
Hallo Echo - Hallo stichy face-wink

der FC Befehl sollte dir doch nur den Unterschied zeigen, den du da angestellt hast..

Falls du aber noch eine Hilfestellung brauchst...

Mit welchem Befehl löscht man Dateien?
Mit welchem Befehl löscht man Ordner?

Willst du Ordner oder Dateien löschen?
Wie muß dann der Befehl dazu lauten?

@echo rd /s /q %%i
habe nun den Befehl abgewandelt wie du beschrieben hast
do del rd /s /q %%i

Do del or not do rd - das ist wohl keine Frage...
echo sollte raus - nicht del rein
Member: Biber
Biber Oct 24, 2009 at 22:51:11 (UTC)
Goto Top
Moin stichy,

bevor sich das hier noch länger hinzieht:
TsukiSan meinte (wie auch T-Mo geschrieben hat):
  • Wenn der Befehl RD ausgeführt statt angezeigt werden soll, dann lass das "ECHO" einfach weg.
  • Verwende "..DO RD...." statt "DO ECHO RD...".

Also sollte diese Zeile...
for /f "usebackq" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd /s /q %%i  
noch schnell ergänzt werden, damit auch Datei/Verzeichnisnamen mit Leerzeichen verarbeitet werden:
for /f "usebackq Delims=" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd /s /q "%%i"  
(siehe deine "...Browser\Apple" und "..Browser\Avant"-Anzeige)

Außerdem, damit beim Löschen nix kaputtgeht und wenn es stimmt, was du schreibst:
Die "Version.." Ordner sind ohne Inhalt.
...dann [dringender Tipp!]:
Lass die beiden Schalter /s und /q des RD-Befehls weg (Unterverzeichnisse/Dateien gibt es ja nicht laut Plan)

Bleibt:
@for /f "usebackq Delims=" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @echo rd "%%i"  
Wenn bzw. nachdem diese Zeile mit "@echo" hinreichend getestet ist, lösche das Wort "@echo" raus.
@for /f "usebackq Delims=" %%i IN (`dir E:\batch_test\Version*.* /s /b /ad`) do @rd  "%%i"  

Die letzte Zeile kann dann als Batch "produktiv" gehen und alle anderen Versuchsvarianten gelöscht werden.

Grüße
Biber
Member: stichy
stichy Oct 25, 2009 at 01:36:11 (UTC)
Goto Top
Dankeschön TimoBeil und Biber.

Mit eurer Hilfe bin ich jetzt am Ziel angelangt und mein Batchfile so angepasst, dass die passenden Ordner (Version...) ohne Inhalt gelöscht werden.

Danke nochmals für eure Hilfe.

Ich möchte vieles mit Batchfiles lösen aber mir fehlt einfach noch etwas Erfahrung.

Gruß stichy

PS: Biber dein letzter Tip ist passt genau. Funktioniert wunderbar.