Hallo zusammen,
gibt es eine einfache Moeglichkeit, Verzeichnisse zu loeschen aber nur wenn Sie leer sind? Ich haette angenommen "delete" oder "del" ohne "-s" und "-f" loeschten nur leere Verzichnisse, aber meine Tests zeigen etwas anderes.
frank
Verzeichnis loeschen, aber nur wenn es leer ist
- embl-structures
- Beiträge: 327
- Registriert: 13 Jan 2010, 18:41
- Wohnort: Heidelberg
- Kontaktdaten:
Re: Verzeichnis loeschen, aber nur wenn es leer ist
Moinsens...
das lässt sich nur über eine Batchdatei realisieren. Ich hab mal ein wenig gegoogelt
und bin zu folgender Quick-And-Dirty-Lösung gekommen:
Das entsprechend anpassen, zB. den Ordner, der zu löschen ist angeben, die Kommandos nachtragen, die ausgeführt werden sollen, FALLS noch Dateien drin sind (also hier statt "echo Da sind %count% Dateien drin.")
und dann ins Script einbauen durch Aufruf der Batch-Datei...
Gruß
Thomas_H
das lässt sich nur über eine Batchdatei realisieren. Ich hab mal ein wenig gegoogelt

Code: Alles auswählen
@echo off
dir /a-d | find /c "." > NUMfiles.###
set /p count=<NUMfiles.###
IF %count% == 0 GOTO Ende
echo Da sind %count% Dateien drin.
Goto Ende
:NixDrin
echo Keine Dateien zu finden
:Ende
und dann ins Script einbauen durch Aufruf der Batch-Datei...
Gruß
Thomas_H
Kennst Du schon die WIKI für OPSI-Scripte? Fertige Installationsscripte bekommen und ablegen unter OPSI-Wiki
Aus dem Glashaus
: UIB bietet auch Schulungen und Supportverträge für Opsi an.
Aus dem Glashaus


- embl-structures
- Beiträge: 327
- Registriert: 13 Jan 2010, 18:41
- Wohnort: Heidelberg
- Kontaktdaten:
Re: Verzeichnis loeschen, aber nur wenn es leer ist
Vielen Dank. Und schon habe ich wieder etwas Batch-Programmierung gelerntThomas_H hat geschrieben:Code: Alles auswählen
@echo off dir /a-d | find /c "." > NUMfiles.### set /p count=<NUMfiles.### IF %count% == 0 GOTO Ende echo Da sind %count% Dateien drin. Goto Ende :NixDrin echo Keine Dateien zu finden :Ende

Code: Alles auswählen
[DosInAnIcon_RemoveDir]
rmdir /Q $MeinVerzeichnis
frank
Re: Verzeichnis loeschen, aber nur wenn es leer ist
Moinsens...
Zitat 'help rmdir':
Ob Du nun 'rmdir /Q %MeinVerzeichnis%' oder einfach nur 'rmdir %MeinVerzeichnis%' schreibst, bleibt dabei egal. Die Antwort ist beim nicht lleren Verzeichnis gleich:
Gruß
Thomas_H
Öhm... nö. /Q unterdrückt die Nachfrage, wenn Du mit dem Schalter /S alle Verzeichnisse und Dateien im angegebenen Verzeichnis löschen willst.embl-structures hat geschrieben:Allerdings macht der DOS-Befehl 'rmdir' genau was ich will: Er loescht ein Verzeichnis, aber nur wenn es leer ist. Ich kann deshalb mein Problem mit folgender Funktion loesen:
Code: Alles auswählen
[DosInAnIcon_RemoveDir] rmdir /Q $MeinVerzeichnis
Zitat 'help rmdir':
Wenn's so einfach wär, hätte es auch irgendwer geschrieben...Entfernt (löscht) ein Verzeichnis.
RMDIR [/S] [/Q] [Laufwerk:]Pfad
RD [/S] [/Q] [Laufwerk:]Pfad
/S Löscht alle Verzeichnisse und Dateien im angegebenen Verzeichnis
zusätzlich zu dem Verzeichnis selbst. Wird verwendet, um ganze
Verzeichnisbäume zu löschen.
/Q Keine Nachfrage, ob die Verzeichnisbäume mit /S entfernt werden
sollen.

Deine Ausgangsfrage aber ist ja, wie Du Verzeichnisse löschen kannst, eben nur wenn sie leer sind. Und sauberer ist, zuvor eine Prüfung durchzuführen und damit Fehler zu vermeiden, die den Anwender uU. verwirren...Das Verzeichnis ist nicht leer
Gruß
Thomas_H
Kennst Du schon die WIKI für OPSI-Scripte? Fertige Installationsscripte bekommen und ablegen unter OPSI-Wiki
Aus dem Glashaus
: UIB bietet auch Schulungen und Supportverträge für Opsi an.
Aus dem Glashaus


- embl-structures
- Beiträge: 327
- Registriert: 13 Jan 2010, 18:41
- Wohnort: Heidelberg
- Kontaktdaten:
Re: Verzeichnis loeschen, aber nur wenn es leer ist
Ja, ich koennte mir tatsaechlich das /Q sparen, aber 'rmdir' tut trotzdem exakt das Gewuenschte.Thomas_H hat geschrieben:Öhm... nö. /Q unterdrückt die Nachfrage, wenn Du mit dem Schalter /S alle Verzeichnisse und Dateien im angegebenen Verzeichnis löschen willst.embl-structures hat geschrieben:Allerdings macht der DOS-Befehl 'rmdir' genau was ich will: Er loescht ein Verzeichnis, aber nur wenn es leer ist. Ich kann deshalb mein Problem mit folgender Funktion loesen:Code: Alles auswählen
[DosInAnIcon_RemoveDir] rmdir /Q $MeinVerzeichnis
Davon kann man in Foren und Maillisten nicht unbedingt ausgehenThomas_H hat geschrieben:Wenn's so einfach wär, hätte es auch irgendwer geschrieben...

Eben, und genau tut rmdir in einem einzigen Kommando: Testen ob das Verzeichnis leer ist und falls nicht - und kein /S gegeben ist -, dann wird es geloescht. Das Ganze findet in einer DosInAnIcon-Sektion statt (siehe mein Beispiel), es gibt also auch keinerlei verwirrende Meldungen an die Benutzer/innen.Thomas_H hat geschrieben:Ob Du nun 'rmdir /Q %MeinVerzeichnis%' oder einfach nur 'rmdir %MeinVerzeichnis%' schreibst, bleibt dabei egal. Die Antwort ist beim nicht lleren Verzeichnis gleich:Deine Ausgangsfrage aber ist ja, wie Du Verzeichnisse löschen kannst, eben nur wenn sie leer sind. Und sauberer ist, zuvor eine Prüfung durchzuführen und damit Fehler zu vermeiden, die den Anwender uU. verwirren...Das Verzeichnis ist nicht leer
Dein Skript ist zwar gut und ich werde es in meiner Codeschnipsel-Sammlung behalten (man weiss ja nie

LG
frank