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
GELÖST

Alte Dateien löschen, aber nicht die 1. Ebene der Unterverzeichnisse

Frage Entwicklung Batch & Shell

Mitglied: Manolax

Manolax (Level 1) - Jetzt verbinden

04.12.2008, aktualisiert 05.12.2008, 7941 Aufrufe, 8 Kommentare

Hallo zusammen

Ich weiß, dass es hierzu schon einige Threads gibt, diese habe ich mir auch schon durchgelesen.
Leider passt da aber nicht so wirklich zu meinem Problem.

Und zwar habe ich vor, in einem Verzeichnis alle Dateien, die älter als x Tage sind automatisch zu löschen.
Ausnahme: Die 1. Ebene sollte da bleiben.

Beispiel:
01.
C:\Ordner\OrdnerA 
02.
         \OrdnerB 
03.
         \OrdnerC
Ich gebe C:\Ordner als Initialpfad an, Ordner A,B,C sollen aber da bleiben, auch wenn sie leer sind. -> Drunter alles weg (was x Tage älter ist)

Ich habe mich daran schon versucht, hänge jetzt aber an einer Stelle.

01.
@echo off 
02.
set dir=%~dpnx1 
03.
set age=%2 
04.
delage32.exe %dir%\*.* %age% /recurse /created /modified 
05.
for /R %dir% %%i in (.) DO  @echo %%~dpnxi >>temp.txt 
06.
for /f "delims=\ tokens=1-10*" %%i in (temp.txt) DO @echo %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r 
07.
del temp.txt
Ich dachte mir, den Pfad in Variablen zu schreiben um dann die Pfade mit nur dem Initialpfad + eine Ebene (C.\Ordner\OrdnerA) auszusortieren.
Könnte dann delage32 nochmal mit der Option /rd drüberlaufen lassen, da er ja dann leere Verzeichnisse löscht.
Leider weiß ich nicht wie ich da weiter vorgehen soll, oder ob ich da auch völlig verkorkst denke.
Vielleicht geht das ja um einiges einfacher.

Vielleicht hat jemand von euch eine Idee wie ich das realisieren kann.
Wollte dann evtl noch einbauen, das man angeben kann wieviele Ebenen er stehen lässt, da bei manchen Verzeichnisse auch die 2. bleiben soll.

Besten Dank schon mal im Vorraus für eure Hilfe.
Mitglied: miniversum
04.12.2008 um 18:00 Uhr
Meine ungetestete Idee dazu:
01.
@echo off 
02.
set dir=%~dpnx1 
03.
set age=%2 
04.
set deep=5 
05.
 
06.
for /f "delims=" %%i in ('dir /b /ad "%dir%"') do ( 
07.
rem Wechsle in das Verzeichnis "%%~i" 
08.
pushd "%dir%\%%~i" 
09.
rem rufe löschunterprozedur auf 
10.
call:killthem 
11.
rem Wechsle ein verzeichnis zurück 
12.
popd 
13.
14.
goto:eof 
15.
 
16.
:killthem 
17.
rem zähle die ebenen die stehn bleiben sollen runter. 
18.
set /a deep=%deep%-1 
19.
if %deep% gtr 0 ( 
20.
rem wenn in einer ebene angekommen inder kene verzeichnisse gelöscht werden dürfen liste alle verzeichnisse auf und wechsle in diese 
21.
for /f "delims=" %%j in ('dir /b /ad') do ( 
22.
pushd "%%~j" 
23.
rem rufe löschunterprozedur auf 
24.
call:killthem 
25.
rem Wechsle ein verzeichnis zurück 
26.
popd 
27.
28.
) else ( 
29.
rem ab einer ebene in der auch Verzeichnisse gelöscht werden dürfen löche alle verzeichnisse die zu alt sind 
30.
ECHO delage32.exe %age% /recurse /created /modified /rd 
31.
32.
rem lösche alle Dateien die zu alt sind. Dies geschieht in allen unterverzeichnissen 
33.
ECHO delage32.exe %age% /recurse /created /modified 
34.
goto:eof
Wenns tut wie es soll dann die ECHOs entfernen.

Es wird, vom grundverzeichnis ausgehend, alle unterverezeichnisse gesucht und nahc einander in diese gewechselt (mit pushd). Danach wird die Unterprozedur killthem aufgerufen die im aktuellen verzeichnis Dateien löscht die zu alt sind. außerdem prüft sie welche rekorsionstiefe sie zum grundverzeichnis hat und sollte diese teife erreicht sein (rückwärts zählen bis 0) werden auch verzeichnisse gelöcht die zu alt sind.
Nach jedem unterprozeduraufruf wird ins letzte (höhere) verzeichnis zurück gewechselt (mit popd)
Bitte warten ..
Mitglied: Manolax
04.12.2008 um 18:04 Uhr
Erst mal besten Dank für deine Hilfe und schnelle Antwort.
Kannst du mir aber vielleicht noch nen Gefallen tun und das bisl kommentieren.
Is für mich so bisl schwer nach zu vollziehen, was du da machst *g*
Bitte warten ..
Mitglied: miniversum
04.12.2008 um 18:12 Uhr
Ich werd die Kommentare oben reinediieren.
Bitte warten ..
Mitglied: Manolax
04.12.2008 um 18:33 Uhr
Danke für die comments
Aber was genau bewirkt denn ('dir /b /ad "%dir%"') in der for schleife???
Hab das gerade schon mal getestet, das ist der Ouput:
01.
C:\>deltest.cmd C:\Folder 30 
02.
 
03.
Das System kann den angegebenen Pfad nicht finden. 
04.
delage32.exe C:\Folder\*.* 30 /recurse /created /modified /preview 
05.
Das System kann den angegebenen Pfad nicht finden. 
06.
delage32.exe C:\Folder\*.* 30 /recurse /created /modified /preview 
07.
Das System kann den angegebenen Pfad nicht finden. 
08.
delage32.exe C:\Folder\*.* 30 /recurse /created /modified /preview 
09.
Das System kann den angegebenen Pfad nicht finden. 
10.
delage32.exe C:\Folder\*.* 30 /recurse /created /modified /preview
In dem Ordner sind nur paar Testdateien drin, denen ich per hand ein altes Datum eingetragen habe und ein paar mit heutigem Datum...
Werde das dann morgen nochmal testen, geh jetzt erst mal heim...

Aber trotzdem schon mal THX
Bitte warten ..
Mitglied: miniversum
04.12.2008 um 19:19 Uhr
dir /b /ad "%dir%"
Sollte dir die Verzeichnisse anzeigen die in %dir% sind.

Ich sehe grade: In zeile 22 ist ein fehler. Das muss natürlichnciht
pushd "%%~i"
sondern
pushd "%%~j"
lauten (ich korrigiere es mal oben)
Bitte warten ..
Mitglied: Manolax
05.12.2008 um 10:16 Uhr
Hmm...
Die Ausgabe bleibt die gleiche, wie ich schon gepostet habe...
Mal schauen ob ich den Fehler finde^^
Bitte warten ..
Mitglied: Manolax
05.12.2008 um 13:44 Uhr
Bei Zeile 8 muss es
pushd "%dir%%%~i"

anstatt
pushd "%%~i"

heißen
Bitte warten ..
Mitglied: miniversum
05.12.2008 um 17:41 Uhr
Achja stimmt. Ich werds oben noch ändern.
Funktioniert den dann alles wie es soll?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Alle Dateien in Verzeichnis und Unterverzeichnissen löschen, mit Ausnahme aller.txt-Dateien
gelöst Frage von tegwertBatch & Shell5 Kommentare

Hallo zusammen! Ich habe zum löschen aller Dateien in bestimmten Verzeichnissen und dessen Unterverzeichnissen folgende Batchzeile erstellt: Dabei muss ...

Batch & Shell
In Unterverzeichnissen alle Dateien mit Ausnahme der jeweils größten Datei löschen
gelöst Frage von schikopixBatch & Shell2 Kommentare

Liebe Experten, könnte mir jemand bei folgendem Problem mit einer Batchdatei helfen? Ich möchte aus einem Verzeichnis das mehrere ...

Batch & Shell
Dateien (keine Ordner) löschen die älter sind als
gelöst Frage von siziigilendirmezBatch & Shell4 Kommentare

Guten Morgen ich möchte gerne mit einer power Shell Dateien löschen die älter als 30 tage sind. Die Dateien ...

Batch & Shell
Powershell ältere Dateien löschen
gelöst Frage von Cougar77Batch & Shell6 Kommentare

Hallo, ich habe ein kleines Problem mit einem Datenaustauschordner. Und zwar möchte ich, dass in einem Ordner Dateien 30 ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...