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 Dateien löschen, wenn bestimmte Datei älter als x Tage ist

Mitglied: BlaBlup

BlaBlup (Level 1) - Jetzt verbinden

10.07.2006, aktualisiert 14.07.2006, 16792 Aufrufe, 6 Kommentare

Wenn eine Hauptdatei (xyz_001.log) älter als 30 Tage ist sollen alle Dateien gelöscht werden die mit xyz_001 anfangen, auch wenn sie andere Dateiendungen haben (zum Beispiel: xyz_001-1.zip, xyz_001-bsp.log usw)

Hallo,


Ich habe das Problem das ich ein Reihe von Dateien habe die ich löschen will sobald die Hauptdatei älter als 30 Tage ist.

Hier das Beispiel zur Veranschaulichung:

Verzeichnis test

- xyz_001.zip 01.06.2006
- xyz_001.z01 01.06.2006
- xyz_001.z02 01.06.2006
- xyz_001-001.zip 10.06.2006
- xyz_001-001.z01 10.06.2006
- xyz_001.log 10.06.2006

- xyz_002.zip 01.07.2006
- xyz_002.z01 01.07.2006
- xyz_002.z02 01.07.2006
- xyz_002-001.zip 10.07.2006
- xyz_002-001.z01 10.07.2006
- xyz_002.log 10.07.2006

In diesem Beispiel sollen die Dateien xyz_001.zip und xyz_002.zip überprüft werden ob sie älter als 30 tage sind. xyz_001.zip ist älter als 30 Tage, darum sollen alle Dateien die mit xyz_001* anfangen gelöscht werden. Auch die Dateien vom 10.06, da ich mit diesen Dateien ohne die Hauptdatei nichts anfangen kann. Die Dateien haben alle (abgesehen von der Hauptdatei) unterschiedliche Datei Endungen.


Ich kenne das tool "delage", es bringt mich aber in diesem Fall auch nicht weiter. Ich habe schon gegoogelt und auch in diesem Forum gesucht, aber nichts gefunden was mich wirklich weiter bringt.

Vielen Dank im Voraus
BlaBlup
Mitglied: Metzger-MCP
10.07.2006 um 15:51 Uhr
Warum so Kompliziert.

Sortiere doch einfach in einem Explorer Fenster die Datein nach Datum. Makiere die erste bis letzte löschbare Datei -> Fertig. das jeden Tag.

So wie ich das erkenne, kannst du noch niemals am Dateianfang oder Ende etwas festmachen. Welche Datein gelöscht werden können, ausser Datum.

Schaue mal nach einer Batchdatei !

Mfg Metzger
Bitte warten ..
Mitglied: BlaBlup
10.07.2006 um 16:47 Uhr
Weil es zu aufwändig wäre es jeden Tag zu machen.

Ich kann es schon am Dateinamen Festmachen, da für die Hauptdatei (die die überprüft werden soll) schon über ein suchmuster zu Filtern ist. "xyz_*.zip" Damit bekomme ich alle Dateien die nach Datum überprüft werden müssen. Ich hbe auch eine vbs Script welches alle Dateien auf die diese Suchmuster zutrift löscht, aber ich kenne mich in vbs nicht gut genug aus um da Strings auseinander zu nehmen. Außerdem bin ich für jeden anderen vorschlag (zb. Batch-Datei) offen.

Aber hier mal soweit wie ich es mit vbs und dem Internet hinbekommen habe:

DIM fs,mFolder,f,fc,f1,checkpath,olderthan

'in diesem Ordner wird nach alten Files gesucht
checkpath = "C:\temp\"
'soviele Tage alt dürfen die Files sein
olderthan = 30


set FS = CreateObject("scripting.filesystemobject")
Set f = fs.GetFolder(checkpath)
Set fc = f.Files

For Each f1 in fc
if InStr(2, f1.name, "xyz_") >0 Then 'jede Datei in der xyz_ vorkommt
if InStr(2, f1.name, ".zip") >0 Then 'jede Datei die die endung .zip hat
filedate = cdate(left(f1.datelastmodified,10))

if filedate <= (date - olderthan) then
fs.DeleteFile f1
end if
end if
end if
Next



Ich weiß es ist keine sauber Programmiertes Tool, aber ich habe noch nie mit vbs gearbeitet, und mir viel keine Lösung über Batchdateien ein.
Bitte warten ..
Mitglied: Biber
10.07.2006 um 20:44 Uhr
Moin BlaBlub,

Auf meinem Rechner würde ich es wahrscheinlich mit einem Oneliner vom CMD-Prompt aus machen...
01.
>for %i in (*.log) do @for /f "tokens=1-3,5-7 delims=. " %a in ("%~ti %date%") do @ECHO set /a "datediff= %f*365 + %e*30 + %d - %c*365 - %b*30 -%a" && if !datediff! GEQ 30 del /Y "%~dpn*.*">nul
...der würde als Bätch und auf ein paar Zeilen gestreckt so aussehen
01.
@echo Off & setlocal EnableDelayedExpansion 
02.
PushD "x:\mein\LogVerzeichzeichnis" 
03.
for %%i in (*.log) do ( 
04.
      for /f "tokens=1-3,5-7 delims=. " %%a in ("%%~ti %date%") do ( 
05.
                ECHO set /a "datediff= %%f*365 + %%e*30 + %%d - %%c*365 - %%b*30 -%%a" && if !datediff! GEQ 30 del /Y "%%~dpn*.*">nul  
06.
)) 
07.
PopD
...aber ich gebe zu, erst der Output hilft, den Source nachzuvollziehen.
Output vom CMD-Oneliner oben:
01.
set /a "datediff= 2006*365 + 07*30 + 10 - 2006*365 - 01*30 -12" 
02.
set /a "datediff= 2006*365 + 07*30 + 10 - 2006*365 - 07*30 -06" 
03.
set /a "datediff= 2006*365 + 07*30 + 10 - 2006*365 - 07*30 -03" 
04.
set /a "datediff= 2006*365 + 07*30 + 10 - 2006*365 - 07*30 -05" 
05.
set /a "datediff= 2006*365 + 07*30 + 10 - 2004*365 - 03*30 -18" 
06.
set /a "datediff= 2006*365 + 07*30 + 10 - 2003*365 - 11*30 -10"
.......das heißt, ich rechne einfach (überschlägig) die Datumswerte von Datei- und heutigen Datum [= ("%%~ti %date%") ] um in Tage und bilde die Differenz.
Wenn größer als 30 [Tage], wird Parent-Logdatei und alle Child-Logdateien gelöscht.

Nein, komm zurück, sollte ein Spaß sein...

So etwas würde ich auch keinem Kollegen anbieten...
... das funktioniert zwar, aber ist natürlich so nicht wartbar oder in meinen drei Tagen Jahresurlaubs von irgendwem anpassbar.
Solche Codeschnipsel, zumindest ohne Dokumentation, auf Produktivmaschinen wäre IMHO ein Kündigungsgrund.
Hab ich nur aus educational purposes zusammengebraten.

Wieder im Ernst:
Erste Option wäre für mich, den VBS-Schnipsel fertig zu stellen.
Da ist ja nichts mehr so buggy daran, dass Du es nicht mit zwei Tassen Tee hinbekommst.

Zweite Variante:
- native batch: entfällt. Da Batch NICHT in der Lage ist, mit Datumswerten zu rechnen/ Datumswerte zu vergleichen.
ABER: ich habe schon in einigen ähnlichen Batch-Fragen hier gepostet, wie Batch mit einem kleinen JS- oder VBS-Codefetzen mit der DateDiff()-Funktion zusammenspielen kann.
Such bitte über Forumssuche nach "yesterdate" ... da ist so ein Beispiel.
Wenn Du dieses Beispiel nachvollziehst und leicht variierst (als Parameter das FileDate der *.log-Datei rein, als Ausgabe Differenz in Tagen bis Heute), dann kannst Du es auch LESbar per Batch machen.

Machbare Variante Drei (die ich aus ästhetischen Aspekten ausschließen würde) wäre ein Einzeiler mit der M$-Nobelpreis-Nominierung "ForFiles.exe", die wie für Deinen Fall gemacht ist.
Link zu ForFiles.exe habe ich gestern gepostet.

Gruß
Biber
Bitte warten ..
Mitglied: BlaBlup
11.07.2006 um 08:27 Uhr
Ja, prinzipell funktioniert mein Tool ja auch, nur das es halt nur die Hauptdatei löäscht und nicht die anderen Dazugehörigen Dateien. Und bisher habe ich auch noch nicht die nötige Funktion gefunden die das tut was ich brauche.

Ich dachte daran es irgendwie in der art zu machen:

Die letzten 4 Zeichen von dem Dateinamen abschneiden (.zip)
Ein cmd Befehl aufrufen nach dem Muster: "del (f1.name-4Zeichen)*
.*"
Aufgelöst würde das in obigen Beispiel zum ergebniss haben: "del xyz_001*.*"
das wäre genau das was ich brauche.

Mir ist halt nur nicht klar wie ich das in vbs machen kann.
Bitte warten ..
Mitglied: Metzger-MCP
11.07.2006 um 09:50 Uhr
Schliesse Mich da Biber an.

Ich habe bis jetzt eine ganz wilde Batchdatei zusammen gestrickt.
Die zwa ein bissel aufgebläht ist, aber doch um so einfacher zu verstehen ist.

Leider scheitere ich aber bei dem vergleich 2er Variablen.
Aber vielleicht kann Biber mir da weiter helfen um meine Datei vertig zu stellen.

MFg Metzger
Bitte warten ..
Mitglied: BlaBlup
14.07.2006 um 08:34 Uhr
Vielen Dank für eure Hilfe.

Ich habe mein Script jetzt vervollständigt, und noch erweitert, nachdem ich mich vorgestern Abend mal mit vbs auseinander gesetzt habe!

Habe inzwischen noch die option die Logdatei hinterher per Mail zu versenden.
Naja der "Quellcode würde hier den Rahmen sprengen da er inzwischen (wegen den andern funktionen usw.) auf etwa 280 Zeilen angeschwollen ist. Aber wer Interesse hat kann sich ja bei mir melden.


mfg
Bitte warten ..
Ähnliche Inhalte
Basic

VBS Script: Dateien älter als x Tage löschen

gelöst Frage von KnuefiBasic4 Kommentare

Hallo zusammen, ich habe eine Frage. Ich bin auf der Suche nach ein Script das Dateien älter als x ...

Windows Server

Dateien löschen mit Forfiles, welche älter als x Tage sind

Frage von kellbiddenWindows Server4 Kommentare

Hallo Ich habe ein Script geschrieben, um Unterverzeichnise in einem Folder zu löschen. Dazu habe ich ForFile benutzt. ForFile.exe ...

Batch & Shell

Alle Datein löschen die älter als x Tage sind

Frage von Roadrunner0815Batch & Shell3 Kommentare

Hallo an Alle! Ich brauche mal einen kleinen Denkanstoß zu folgender Problemstellung Ich möchte: - auf einem Laufwerk K: ...

Batch & Shell

Batch Befehl ausführen wenn Datei älter als X Tage

gelöst Frage von BuggerBatch & Shell14 Kommentare

Hallo zusammen, ich finde immer nur Befehle die Dateien oder Ordner löschen nach x Tagen aber nicht um auf ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 20 StundenAusbildung8 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 2 TagenSpeicherkarten2 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 2 TagenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 3 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Off Topic
SysAdmin im öffentlichen Dienst - jemand Erfahrungen?
Frage von JohnDorianOff Topic22 Kommentare

Hallo zusammen, hat jemand Erfahrung wie es so ist als SysAdmin im öffentlichen Dienst (Landkreis) im Südwesten der Republik ...

Vmware
Offene LDAP-Server in AS
gelöst Frage von obi-wan-kenobiVmware16 Kommentare

Hallo alle Miteinander, ich habe ein Problem, unsere VM-Ware Appliance (Version. 6.5.0.10000) ist scheinbar angreifbar. Wir haben eben die ...

SAN, NAS, DAS
Nas mit USB und LAN gleichzeitig zugreifen
gelöst Frage von MarkBeakerSAN, NAS, DAS16 Kommentare

Hallo zusammen, ich suche eine Art NAS, womit ich via LAN und USB zugreifen kann. Folgender Aufbau ist gedacht: ...

Google Android
Samsung S7 Kontakte gelöscht. Kann man die wieder herstellen
Frage von merkelGoogle Android10 Kommentare

Hallo, auf einem S7 wurden Kontakte gelöscht. kann man die wieder herstellen ? gruss Jonas