Top-Themen

Aktuelle Themen (A bis Z)

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

Lösche Verzeichniss per script

Mitglied: zero1de

zero1de (Level 1) - Jetzt verbinden

10.09.2013 um 12:11 Uhr, 1461 Aufrufe, 20 Kommentare

Hallo,

ich brauche einen Script (egal VBS, powershell oder c#) der Verzeichnisse durchsucht und bei bedarf löschen und protokolliert.
Ich habe folgende Struktur:

D:\xxx\xx_207\archiv\20091227
unter d:\xxx\ werden immer neue Verzeichnisse mit xx_208, xx_209 usw.. angelegt die sollen nicht gelöscht werden auch der Unterordner "Archiv" soll nicht gelöscht werden. Gelöscht wird nur der Ordner 20091227 oder 20091228, 20091229 aber auch nur dann, wenn mehr als 5 Ordner drin sind. Dann sollen natürlich nur die ältesten gelöscht werden, bis die letzte 5 Ordner bleiben.

Bei diesem Bespiel hier, soll nur die Unterordner 20091226, 20091227 gelöscht werden da im Verzeichnis D:\xxx\xx_207\archiv\ mehr als 5 Unterordner vorhanden sind. Rest bleibt. Das selbe gilt dann auch für andere Archive

D:\xxx\xx_207\archiv\20091221
D:\xxx\xx_207\archiv\20091222
D:\xxx\xx_207\archiv\20091223
D:\xxx\xx_207\archiv\20091224
D:\xxx\xx_207\archiv\20091225
D:\xxx\xx_207\archiv\20091226
D:\xxx\xx_207\archiv\20091227

Kann mir jemand helfen?
THX im Vorraus

Mitglied: Lochkartenstanzer
10.09.2013, aktualisiert um 13:41 Uhr
Moin

so als schnellschuß:

#/bin/bash 
 
ls -d "D:\\xxx\\xx_207\\archiv\\*" | tail -$(expr $(ls -d "D:\\xxx\\xx_207\\archiv\\*"  | wc -l) - 5) | xargs rm -v 


lks

EDIT:

Die Idee dahinter, falls Du das nachprogrammieren willst:

  • Ein dirlisting in D:\xxx\xx_207\archiv\* gibt die die verzeichnisse dort wider.
  • ein wc zähl die Zeilen und zieht 5 davon ab.
  • das tail schneidet de ersten 5 zeilen davon ab
  • und das was herausfällt sind die verzeichnisnamen, die gelöscht werden können. (heead statt tail läßt die letzten 5 statt der ersten 5 verzeichnisse stehen).
Bitte warten ..
Mitglied: Snowman25
10.09.2013, aktualisiert um 13:30 Uhr
Ich glaube, der TS braucht zumindest eine Windows-Lösung
(auch, wenn er das nicht spezifiert hat )
Bitte warten ..
Mitglied: Lochkartenstanzer
10.09.2013, aktualisiert um 13:32 Uhr
Zitat von Snowman25:
Ich glaube, der TS braucht zumindest eine Windows-Lösung
(auch, wenn er das nicht spezifiert hat )

Der TO sagte

> ich brauche einen Script (egal VBS, powershell oder c# ...

Und die Bash gibt es auch unter windows. entweder standalone oder mit cygwin.

lks
Bitte warten ..
Mitglied: Snowman25
10.09.2013 um 13:32 Uhr
Zitat von Lochkartenstanzer:
Und die Bash gibt es auch unter windows. entweder standalone oder mit cygwin.
Wenn auch umständlich, aber recht hast du.
Bitte warten ..
Mitglied: Lochkartenstanzer
10.09.2013 um 13:35 Uhr
Zitat von Snowman25:
> Zitat von Lochkartenstanzer:
> ----
> Und die Bash gibt es auch unter windows. entweder standalone oder mit cygwin.
Wenn auch umständlich, aber recht hast du.

Wieso umständlich. Ich habe auf den "wichtigen" Windowskisten immer ein cygwin mit drauf. Das ist kaum Mehraufwand, das mitzuinstallieren und die Einzeiler sind schneller "hingerotzt" als erst ein powershell oder cmd-batch zu schreiben.

lks
Bitte warten ..
Mitglied: bastla
10.09.2013, aktualisiert um 19:13 Uhr
@ lks
Einen Batch braucht das auch nicht - direkt in CMD etwa so:
for /d %i in ("D:\xxx\xx_*") do @for /f "skip=5" %a in ('dir /b/o-n/ad "%i\archiv"') do @echo rd "%i\archiv\%a"
Ist etwas länger geworden, weil ja nicht nur der Ordner "D:\xxx\xx_207" behandelt werden soll (und auch noch ein "Sicherheits-echo" zum Testen drin ist) ...

Grüße
bastla
Bitte warten ..
Mitglied: Lochkartenstanzer
10.09.2013 um 20:24 Uhr
Zitat von bastla:
@ lks
Einen Batch braucht das auch nicht - direkt in CMD etwa so:


bash kann ich halt besser als cmd

lks
Bitte warten ..
Mitglied: zero1de
11.09.2013 um 15:47 Uhr
Danke nowman25 du kannst pro Aktive denken. Übrigen ich brauche eine vbs oder powershell script und keine Sprüche Leute
Bitte warten ..
Mitglied: zero1de
11.09.2013 um 15:52 Uhr
Danke für die Mühe aber :

D:\dwh\pu_207\archiv\20091227 es wird nur im untersten Subfolder gelöscht. Die suche läuft ab
hier D:\dwh rekursive durch und löscht nur Subfolder die unter D:\dwh\pu_207\archiv\XXXXXXX drin sind und bei Count > 5 nur die ältesten Folder löschen.
Bitte warten ..
Mitglied: bastla
11.09.2013 um 18:16 Uhr
Hallo zero1de!
ich brauche eine vbs oder powershell script
Was spricht gegen CMD/Batch?

Grüße
bastla
Bitte warten ..
Mitglied: zero1de
12.09.2013 um 15:24 Uhr
Hi,

bekomme folgende Meldung mit deinem Batch:

D:\dwh>rd "D:\dwh\pu_212\archiv\20130902"
Das Verzeichnis ist nicht leer.
Bitte warten ..
Mitglied: zero1de
12.09.2013 um 15:52 Uhr
So würde es im cmd direkt laufen aber wie kann ich das als *.bat oder cmd ausführen und das Ergebnis mit Protokollieren ?

for /d \dwh\pu_*") do @for /f "skip=5" i\archiv"') do rmdir "a" /s /q
Bitte warten ..
Mitglied: bastla
12.09.2013 um 19:18 Uhr
Hallo zero1de!

In einem Batch ist "%i" durch "%%i" zu ersetzen.

Da "rd" keine Ausgabe erzeugt musst Du das zum Protokollieren selbst erledigen - am Beispiel meines Ansatzes oben etwa so:
for /d %%i in ("\dwh\pu_*") do for /f "skip=5" %%a in ('dir /b/o-n/ad "%%i\archiv"') do rd /s /q "%%i\archiv\%%a">nul && >>Log.txt echo "%%i\archiv\%%a" geloescht || >>Log.txt echo "%%i\archiv\%%a" nicht geloescht
Grüße
bastla
Bitte warten ..
Mitglied: Biber
12.09.2013, aktualisiert 13.09.2013
Moin bastla,

ich weiss ja nicht....
Klar, das ist genau das, was dieser zero-Frager sich gewünscht hat.
Außer, dass es jetzt doch ein CMD-Batch ist.

Aber so ein Logfile macht doch überhaupt keinen Sinn.

Wenn die Mimik gewesen wäre:
  • alle Archiv-Verzeichnisse von 2009 bis 2012 durchzuwackeln
  • und alles auf ein externes Medium zu sichern
  • und danach alles Gesicherte in einem Archiv-Verzeichnis zu löschen (oder alles bis auf die jüngsten 5)
  • und den ganzen Prozess in eine Logdatei zu drücken...

-> das hätte etwas.

Aber in einer Logdatei zu protokollieren "Ich habe Unterverzeichnisse xy in \20091218\ gelöscht...." ?
Was soll das bringen? Auch wenn du die Logdatei in Plexiglas vergilbungssicher konservierst - das hilft doch keinem im nächsten August, wenn einer diese Archive sucht.

Zumindest solltest du diesen unfreundlichen Komiker mal darauf hinweisen.
Mir würde dafür die Geduld fehlen.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
12.09.2013, aktualisiert 13.09.2013
Hallo Biber!
Zumindest solltest du diesen unfreundlichen Komiker mal darauf hinweisen.
Dem habe ich nix mehr hinzuzufügen.

Grüße
bastla
Bitte warten ..
Mitglied: zero1de
13.09.2013 um 09:06 Uhr
Die Logdatei soll als Kontrolle dienen, damit ich weiß welche Datei gelöscht wurden und wann.
Bitte warten ..
Mitglied: zero1de
13.09.2013 um 09:08 Uhr
Hi Bastla,

Irgendwie bekomme ich das nicht zum laufen > Syntaxfehler !!!.
Wie ich schon sagte, ich muss das Batch/Script Zeitgesteuert starten deshalb als cmd Datei.

Gruß
zero1de
Bitte warten ..
Mitglied: Biber
13.09.2013 um 16:10 Uhr
Zitat von zero1de:
Die Logdatei soll als Kontrolle dienen, damit ich weiß welche Datei gelöscht wurden und wann.
Wenn du sehen können willst, WANN eine Datei gelöscht wurde, dann solltest du vielleicht noch %date% und %time% mit in die Logdatei schreiben.
Sonst siehst du nur, DASS gelöscht wurde.

Zitat von zero1de:
Wie ich schon sagte, ich muss das Batch/Script Zeitgesteuert starten deshalb als cmd Datei.
Wie "Wie ich schon sagte..." ????
Mag sein, dass du es gesagt hast, aber das hört doch hier keiner.
Du musst es in deinen Beitragstext schreiben, sonst ahnt es niemand.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
13.09.2013 um 17:33 Uhr
Hallo zero1de!
Irgendwie bekomme ich das nicht zum laufen > Syntaxfehler !!!.
Irgendwie bekomme ich den Syntaxfehler nicht hin ...
D:\TEMP>tree D:\dwh 
Auflistung der Ordnerpfade für Volume TEMP 
Volumenummer: 1234-5678 
D:\DWH 
+---pu_207 
¦   +---archiv 
¦   ¦   +---20091223 
¦   ¦   +---20091224 
¦   ¦   +---20091225 
¦   ¦   +---20091226 
¦   ¦   +---20091227 
¦   ¦   +---20091221 
¦   ¦   +---20091222 
¦   ¦   +---20091228 
¦   ¦   +---20091229 
¦   +---tst 
+---pu_208 
    +---archiv 
        +---20100102 
        +---20100103 
        +---20100104 
        +---20100105 
        +---20100106 
        +---20100107 
        +---20100108 
 
D:\TEMP>type LoeschenBisAuf5.cmd 
for /d %%i in ("\dwh\pu_*") do for /f "skip=5" %%a in ('dir /b/o-n/ad "%%i\archiv"') do rd /s /q "%%i\archiv\%%a">nul && >>Log.txt echo "%%i\archiv\%%a" geloescht || >>Log.txt echo "%%i\archiv\%%a" nicht geloescht 
 
D:\TEMP>LoeschenBisAuf5.cmd 
 
D:\TEMP>for / %i in ("\dwh\pu_*") do for /F "skip=5" %a in ('dir /b/o-n/ad "%i\archiv"') do rd /s /q "%i\archiv\%a"  1>nul  && echo "%i\archiv\%a" geloescht  1>>Log.txt  || echo "%i\archiv\%a" nicht geloescht 1>>Log.txt 
 
D:\TEMP>for /F "skip=5" %a in ('dir /b/o-n/ad "\dwh\pu_207\archiv"') do rd /s /q "\dwh\pu_207\archiv\%a"  1>nul  && echo "\dwh\pu_207\archiv\%a" geloescht  1>>Log.txt  || echo "\dwh\pu_207\archiv\%a" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_207\archiv\20091224"  1>nul  && echo "\dwh\pu_207\archiv\20091224" geloescht  1>>Log.txt  || echo "\dwh\pu_207\archiv\20091224" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_207\archiv\20091223"  1>nul  && echo "\dwh\pu_207\archiv\20091223" geloescht  1>>Log.txt  || echo "\dwh\pu_207\archiv\20091223" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_207\archiv\20091222"  1>nul  && echo "\dwh\pu_207\archiv\20091222" geloescht  1>>Log.txt  || echo "\dwh\pu_207\archiv\20091222" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_207\archiv\20091221"  1>nul  && echo "\dwh\pu_207\archiv\20091221" geloescht  1>>Log.txt  || echo "\dwh\pu_207\archiv\20091221" nicht geloescht 1>>Log.txt 
 
D:\TEMP>for /F "skip=5" %a in ('dir /b/o-n/ad "\dwh\pu_208\archiv"') do rd /s /q "\dwh\pu_208\archiv\%a"  1>nul  && echo "\dwh\pu_208\archiv\%a" geloescht  1>>Log.txt  || echo "\dwh\pu_208\archiv\%a" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_208\archiv\20100103"  1>nul  && echo "\dwh\pu_208\archiv\20100103" geloescht  1>>Log.txt  || echo "\dwh\pu_208\archiv\20100103" nicht geloescht 1>>Log.txt 
 
D:\TEMP>rd /s /q "\dwh\pu_208\archiv\20100102"  1>nul  && echo "\dwh\pu_208\archiv\20100102" geloescht  1>>Log.txt  || echo "\dwh\pu_208\archiv\20100102" nicht geloescht 1>>Log.txt 
 
D:\TEMP>tree D:\dwh 
Auflistung der Ordnerpfade für Volume TEMP 
Volumenummer: 1234-5678 
D:\DWH 
+---pu_207 
¦   +---archiv 
¦   ¦   +---20091225 
¦   ¦   +---20091226 
¦   ¦   +---20091227 
¦   ¦   +---20091228 
¦   ¦   +---20091229 
¦   +---tst 
+---pu_208 
    +---archiv 
        +---20100104 
        +---20100105 
        +---20100106 
        +---20100107 
        +---20100108 
 
D:\TEMP>type Log.txt 
"\dwh\pu_207\archiv\20091224" geloescht 
"\dwh\pu_207\archiv\20091223" geloescht 
"\dwh\pu_207\archiv\20091222" geloescht 
"\dwh\pu_207\archiv\20091221" geloescht 
"\dwh\pu_208\archiv\20100103" geloescht 
"\dwh\pu_208\archiv\20100102" geloescht 
 
D:\TEMP>
Grüße
bastla
Bitte warten ..
Mitglied: zero1de
16.09.2013 um 10:37 Uhr
Hi Bastla,

vielen Dank für deine Mühe. Es funktioniert.

Thx
zero1de
Bitte warten ..
Ähnliche Inhalte
Windows Server
Verzeichnisse löschen
Frage von MiStWindows Server2 Kommentare

Hallo, ich habe folgendes Problem. von einem Client habe ich auf einem Netzpfad (Netzwerkfreigabe) ein Verzeichnis angelegt. Wenn ich ...

Batch & Shell
Robocopy, löschen Verzeichnisse
Frage von DanielBodenseeBatch & Shell1 Kommentar

Hallo zusammen, ich gehe davon aus das Robocopy keine Verzeichnisse auf dem Ziel löschen kann bei dem er auf ...

Batch & Shell

Mehrere Verzeichnisse in einen Script angeben

gelöst Frage von KnuefiBatch & Shell17 Kommentare

Hallo zusammen, ich brauche eure Hilfe. Ich habe unten stehendes Script zum löschen ältere Dateien in einen Unterordner. Nun ...

Batch & Shell

Batch zum durchsuchen eines Verzeichnisses inkl. löschen

gelöst Frage von zeroblue2005Batch & Shell4 Kommentare

Hallo Zusammen, ich weiß garnicht, ob man das was ich vorhabe überhaupt so lösen kann aber ich lege einfach ...

Neue Wissensbeiträge
Sicherheit
Adminrechte dank Bug in Intel HD Graphics Treiber
Information von DerWoWusste vor 13 StundenSicherheit

Intel HD graphics 4200 und neuer (4400, 4600 520,530,620, 630,) sind auf jeden Fall betroffen und bereinigte Treiber sind ...

Router & Routing

Endlich: Reines Kabel-TV Modem in D erhältlich !

Information von aqui vor 3 TagenRouter & Routing11 Kommentare

Mit dem Technicolor TC4400-EU Modem sind nun auch Breitband Router ohne integriertes Modem oder Firewalls wie z.B. die pfSense ...

Netzwerkgrundlagen
The Illustrated TLS Connection
Information von Lochkartenstanzer vor 4 TagenNetzwerkgrundlagen1 Kommentar

Moin, Unter findet man eine gelungene Erläuterung von TLS. Fördert sehr das verständnis darüber, was da passiert. lks

Windows 10

Zuverlässiger Remove-AppxProvisionedPackage Ausführen in W10-1803

Tipp von NetzwerkDude vor 5 TagenWindows 104 Kommentare

Moin, Remove-AppxProvisionedPackage hat in 1709 recht zuverlässig funktioniert, in 1803 ist es leider so das es gerne mail failed ...

Heiß diskutierte Inhalte
Windows Server
AD User wird immer wieder gesperrt
Frage von YellowcakeWindows Server20 Kommentare

Hey ich habe einen User (ein GL User - Natürlich was denn sonst) der immer wieder gesperrt wird. Ich ...

Windows Netzwerk
Gruppenrichtlinie für einen PC deaktivieren
gelöst Frage von Florian961988Windows Netzwerk14 Kommentare

Hallo, kleines Problem und immoment finde ich dazu keine Lösung oder mir fällt nicht ein, wie ich es suche ...

Debian
Linux debian 9 Installation
Frage von Green14Debian13 Kommentare

Hallo zusammen, ich habe mich ein wenig mit Debian auseinandergesetzt und möchte mir eine Standard-Installation als Grundlage für andere ...

Switche und Hubs
OpenSource oder Freeware zur Verwaltung von Switchen
gelöst Frage von JonskezSwitche und Hubs12 Kommentare

Hallo, gibt eine kostenlose Verwaltungssoftware für Switche (überwiegend HP/Aruba)? Es sollte möglich sein, aus der Ferne z.B. die Firmware ...