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

Wie kann ich in einem Verzeichnis bestimmte Dateien eines bestimmten Alters via Script löschen?

Frage Entwicklung Batch & Shell

Mitglied: XxDustyxX

XxDustyxX (Level 1) - Jetzt verbinden

04.05.2011 um 15:57 Uhr, 6218 Aufrufe, 20 Kommentare

Hallo zusammen! Ich bin neu hier im Forum und freue mich auf einen regen Meinungsaustausch mit Euch!

Ich stehe gerade vor der folgenden Problemstellung.

Es sollen in regelmäßigen Abständen (60/90 Tage) in einem bestimmten Verzeichnis und Unterordnern bestimmte Dateien gelöscht werden. Folgende Kriterien muss diese Datei erfüllen:

Sie hat einen spezifischen Dateinamen (z. Bsp. _tmp_) und ist älter als 60 bzw. 90 Tage. Das Script soll das gesamte Verzeichnis inkl. der Unterordner überprüfen und die Dateien löschen, die den o.a. Kriterien entsprechen.

Ich habe hier schon einige Anleitungen und Tipps bezüglich Forfiles und DelAge32 gelesen, aber leider keine auf mein "Problem" zutreffenden Antworten gefunden.

Ich hoffe sehr, dass jemand von Euch eine Lösung für mich hat.

Besten Dank & Grüße

XxDustyxX
Mitglied: TsukiSan
04.05.2011 um 16:10 Uhr
da gab's doch neulich dieses Script hier im Forum:
01.
'*************************************************************************  
02.
'Dateien die älter als intTage sind löschen  
03.
'DateLastModified=Änderungsdatum; DateCreated=Erstellungsdatum  
04.
'WScript.Echo intZahl & " Dateien gelöscht." (Ausgabe gelöschter Dateien)  
05.
'*************************************************************************  
06.
 
07.
Set objFSO = CreateObject("Scripting.FileSystemObject")  
08.
strOrdner = "D:\scans\"			'Ordnerpfad angeben  
09.
strExtension = ""	  
10.
intTage = 1				'Anzahl der Tage angeben  
11.
Set objOrdner = objFSO.GetFolder(strOrdner)  
12.
intZahl = 0  
13.
intOrdner = 0 
14.
For Each objDatei In objOrdner.Files  
15.
    If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _   
16.
        And DateDiff("d", objDatei.DateCreated, Now) > intTage Then  
17.
        objDatei.Delete  
18.
        intZahl = intZahl + 1  
19.
    End If  
20.
Next  
21.
For Each objUnterordner In objOrdner.SubFolders    
22.
    If DateDiff("d", objUnterordner.DateCreated, Now) > intTage Then   
23.
       objUnterordner.Delete 
24.
       intOrdner = intOrdner + 1   
25.
    End If   
26.
Next   
27.
WScript.Echo intZahl & " Dateien, sowie" & VBCRLF & intOrdner & " Ordner gelöscht."
such mal nach ungefähr: Dateien-und-Ordner-nach-nTage-loeschen

Gruss
Tsuki
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 16:13 Uhr
Hallo Tsuki,

vielen Dank für Deinen Hinweis. Ich bin eher auf der Suche nach einem Shell-Script und nicht nach einem VB-Script.

Ich werde jetzt mal Deinen Tipp bzgl. der Suche benutzen!

Viele Grüße

XxDustyxX
Bitte warten ..
Mitglied: TsukiSan
04.05.2011 um 16:15 Uhr
ups,

bei shell bin ich ehr keine Hilfe für dich. Da müssen die anderen Jungs ran

Gruss
Tsuki
Bitte warten ..
Mitglied: Lochkartenstanzer
04.05.2011 um 16:19 Uhr
cygwin installieren ( http://cygwin.com ) und dann in der bash:



find /pfad/in/dem/gesucht/werden/soll/ -name "_tmp_" -ctime 90 -exec rm -rfv {} \;

eingeben.

wahlweise kann man beim namen auch iname nehmen, wenn Groß- und Kleinschreibung egal ist und statt ctime atime oder mtime, je nachdem ob Erstellungs-, Zugriffs- oder Änderungsdatum auschlaggebend ist. Bei der Zeitangabe kann man auch mit + oder - noch angeben, ob auch ältere oder neuere Dateien/Order gefunden werden sollen.
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 16:34 Uhr
Danke für Deine Antwort, Lochkartenstanzer!

Kennst Du evtl. auch eine Lösung ohne das erwähnte Tool zu installieren!?

Evtl. für die PowerShell...!? So etwas muss sich doch auch mit Bordmitteln bewerkstelligen lassen.

Grüße
Bitte warten ..
Mitglied: Skyemugen
04.05.2011 um 16:50 Uhr
Aloha,

man könnte auch mit batch pur das ganze bewerkstelligen, allerdings Aufwand & Nutzen sind nicht wirklich gut geregelt (schon eher, wenn man Boardmittel wie .vbs dazuzieht [für die Datumsberechnung wäre dies nunmal am Einfachsten]).

greetz André

P.S.: Powershell als Boardmittel zu betrachten, hmm ... mag für neuere OS stimmen aber für die Millionen von XP Rechnern wäre auch dies ein zusätzliches Programm :P
Bitte warten ..
Mitglied: 32067
04.05.2011 um 16:59 Uhr
Guck dir mal forfiles.exe an, das hab ich dafür mal verwendet.

Genaue Beschreibung für diesen Einsatzfall hier: http://www.jjclements.co.uk/index.php/2008/07/31/delete-files-older-tha ...
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 17:01 Uhr
Hallo Andre,

danke für Deine Antwort! Wo Du Recht hast... (PowerShell), da hast Du Recht! Wobei diese bereits installiert ist.

Ich werde mich jetzt mal mit dem Vorschlag/Script vom Lochkartenstanzer auseinander setzen.

Sollte noch jemand einen Hinweis oder Tipp für mich haben... immer her damit!

Grüße
Bitte warten ..
Mitglied: Loeffelstiel
04.05.2011 um 17:02 Uhr
MoinMoin,

eventuell ist dieses kleine Programm für Dich ausreichend: delage32, siehe

http://home.mnet-online.de/horst.muc/wbat32d.htm
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 17:07 Uhr
Hallo DKrause,

forfiles hatte ich mir auch schon angesehen. Allerdings benötige ich die Möglichkeit Dateien mit einem bestimmten Namen (_tmp_, nicht *.*) und einem bestimmten Alter (60/90 Tage) automatisiert löschen zu lassen.

Grüße
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 17:09 Uhr
Zitat von Loeffelstiel:
MoinMoin,

eventuell ist dieses kleine Programm für Dich ausreichend: delage32, siehe

http://home.mnet-online.de/horst.muc/wbat32d.htm


Hallo Loeffelstiel,

DelAge32 hat die gleiche Einschränkung wie forfiles... das löschen aller Dateien (*.*) hilft mir leider nicht weiter...

Grüße
Bitte warten ..
Mitglied: Loeffelstiel
04.05.2011 um 17:13 Uhr
01.
delage32 _tmp_ 60 /recurse /created
sollte gehen.
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 17:19 Uhr
Zitat von Loeffelstiel:
01.
delage32 __tmp__ 60 /recurse /created
sollte gehen.

Mmh... klingt plausibel! Ich werde das mal testen!

Danke & Grüße
Bitte warten ..
Mitglied: XxDustyxX
04.05.2011 um 17:31 Uhr
Wenn mich nicht alles täuscht sollte das Script folgendermaßen aussehen:

DelAge32 C:\files\ _tmp_ 60 /recurse /created /includeRHS

Ich habe es noch nicht getestet... würde ich aber vorher via /preview machen!

Grüße
Bitte warten ..
Mitglied: Skyemugen
04.05.2011 um 17:33 Uhr
Aloha,

nah dran aber doch daneben, dennoch habe es selber mal getestet (war mir auch nicht bekannt), es ginge z.B. so:

delage32 *_tmp_* 60 /recurse /created /preview
oder auch so, wenn man den Dateitypen noch mit angeben will:

delage32 *_tmp_*.typ 60 /recurse /created /preview
greetz André

P.S.: lieber erstmal Voransicht ^_^
Bitte warten ..
Mitglied: Biber
04.05.2011 um 17:49 Uhr
Moin XxDustyxX,

willkommen im Forum.

Was genau war denn bei ForFiles und DelAge32 das Problem, das dich schreiben liess:
Ich habe hier schon einige Anleitungen und Tipps bezüglich Forfiles und DelAge32 gelesen,
aber leider keine auf mein "Problem" zutreffenden Antworten gefunden.

Ich finde sowohl die Hilfe, die bei "ForFiles.exe" angezeigt wird und natürlich erst recht die DelAge32.exe durchaus brauchbar.

Mit ForFiles (das ich überhaupt nie verwende) komme ich auch nach kurzem Hilfe-Lesen der vielleicht 20 Zeilen auch zu schnellen Ergebnissen.

Jedenfalls kann ich auch damit rekursiv und mit Wildcards arbeiten - und dabei habe ich sicherlich keine aktuelle Version.

>forfiles 
FORFILES v 1.1 - emmanubo@microsoft.com - 4/98 
 
 
Syntax : FORFILES [-pPath] [-mSearch Mask] [-ccommand] [-d<+|-><DDMMYYYY|DD>] [-s] 
 
 -pPath               Path where to start searching 
 -mSearch Mask        Search files according to <Search Mask> 
 -cCommand            Command to execute on each file(s) 
 -d<+|-><DDMMYYYY|DD> Select files with date >= or <=DDMMYYYY (UTC) 
                      or files having date >= or <= (current date - DD days) 
 -s                   Recurse directories 
 -v                   Verbose mode 
 
The following variables can be used in Command : 
 @FILE, @FNAME_WITHOUT_EXT, @EXT, @PATH, @RELPATH, @ISDIR, @FSIZE, @FDATE, 
 @FTIME 
 
To include special hexa characters in the command line : use 0xHH 
 
Default : <Directory : .> <Search Mask : *.*>  <Command : "CMD /C Echo @FILE"> 
Examples : 
FORFILES -pc:\ -s -m*.BAT -c"CMD /C Echo @FILE is a batch file" 
FORFILES -pc:\ -s -m*.* -c"CMD /C if @ISDIR==TRUE echo @FILE is a directory" 
FORFILES -pc:\ -s -m*.* -d-100 -c"CMD /C Echo @FILE : date >= 100 days" 
FORFILES -pc:\ -s -m*.* -d-01011993 -c"CMD /C Echo @FILE is quite old!" 
FORFILES -pc:\ -s -m*.* -c"CMD /c echo extension of @FILE is 0x22@EXT0x22" 
 
(=17:31:09  F:\schnipsel=) 
>forfiles -pf:\schnipsel\ -s -ms*.txt -d-1000 -c"CMD /C Echo @PATH\@FILE : older 1000 days" 
f:\schnipsel\scanlog.txt : older 1000 days 
f:\schnipsel\scanlog_filter.txt : older 1000 days
Egal, ob du eines dieser Tools oder etwas Selbstgelötetes in einem Batch/Script verwendest,
  • nimm dir Zeit für ein paar Kommentare in dem Script
  • und stelle sicher, dass beim "einfachen" Doppelklick/Aufruf ohne jegliche Parameter nur ANGEZEIGT wird, was denn gelöscht werden würde.

Denn rekursive Löschskripte per Doppelklick starten.... ich trau mich das selten.

Grüße
Biber
Bitte warten ..
Mitglied: Skyemugen
05.05.2011 um 08:59 Uhr
Aloha Dusty,

wenn mich nicht alles täuscht, liest du nicht ordentlich alle Beiträge der Helfer ... sonst würde dir jetzt schon auffallen, dass es auch ohne zu testen nicht funktionieren wird ...

Also noch einmal zum Mitschreiben: ohne Platzhalter * läuft da gar nichts aber sonst ist die Zusammenstellung korrekt, achte jedoch eventuell noch darauf, sollte dein Endpfad Leerzeichen enthalten, diesen dann in Zollzeichen nein, das sind keine richtigen Anführungszeichen zu setzen.

DelAge32 "C:\files\*_tmp_*" 60 /recurse /created /includeRHS
greetz André
Bitte warten ..
Mitglied: XxDustyxX
05.05.2011 um 09:18 Uhr
Moin Andre,

Danke für den Hinweis! Du kannst sicher sein das ich alle Beiträge vollständig durchlese! Es kann aber gut sein, dass ich im Eifer des Gefechtes die Platzhalter vergessen habe.

Grüße
Bitte warten ..
Mitglied: XxDustyxX
05.05.2011 um 09:29 Uhr
Hallo Biber,

ich habe bei meiner ersten Suche gehofft, eine Lösung zu finden die genau meiner Problemstellung entspricht. Es hätte ja sein können, dass schon einmal jemand eine Lösung gesucht hat.

Da dies nicht der Fall war, habe ich mich dazu entschlossen meine Frage an das Forum zu stellen.

Mit den mittlerweile geposteten Beiträgen werde ich heute damit beginnen, ein erstes Script zum testen zu erstellen.

Ich danke schon einmal allen die dabei geholfen haben und mir Tipps gegeben haben!

Vielen Dank und Grüße

XxDustyxX

P.S. Ich werde das Script als geplanten Task laufen lassen...
Bitte warten ..
Mitglied: XxDustyxX
05.05.2011 um 12:31 Uhr
Sooo... nach einigen Tests kann ich Erfolg vermelden!

Das Script läuft einwandfrei! Vielen Dank an alle die zur Lösung beigetragen haben!!

Bis bald und viele Grüße

XxDustyxX
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Löschen von Dateien nach bestimmten Zeitmuster
gelöst Frage von NetzwerkDudeBatch & Shell8 Kommentare

Moin, Situation: ein selbstgebautes Backupskript erstellt von Dateien täglich backups nach dem muster: Datei_2017_05_31.file Nun füllt sich der Ausgabeordner ...

Ubuntu
Eine bestimmte Datei aus jedem Home verzeichnis sichern
gelöst Frage von D1Ck3nUbuntu5 Kommentare

Hallo zusammen, ich würde gerne eine bestimmt Datei, die bei jedem meiner User im Home-Verzeichnis liegt, auf eine Backup ...

Batch & Shell
Bestimmte Zeilen mit einem Batch-Script löschen
gelöst Frage von Dnis822Batch & Shell1 Kommentar

Hallo zusammen, ich stehe vor folgendem Problem: ich möchte bestimmte Zeilen in einer Datei löschen. Folgendes habe ich bereits ...

Batch & Shell
Batch Datei: Im Verzeichnis Unterordner durchsuchen und bestimmte Dateien löschen
gelöst Frage von koehloBatch & Shell22 Kommentare

Hallo zusammen, und schon mal DANKE an alle die mir Antworten. Zu mir: Ich bin absoluter Anfänger und werde ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 19 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 21 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.