Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateien erst nach Abgleich mit Archiv löschen

Frage Entwicklung Batch & Shell

Mitglied: 43344

43344 (Level 1)

25.03.2008, aktualisiert 18.10.2012, 2955 Aufrufe, 5 Kommentare

Tach zusammen,

ich habe folgendes geniale Teil:
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
03.
On Error Resume Next 
04.
 
05.
'* hier eigenen Bedürfnissen anpassen * 
06.
 
07.
strOrdnerliste = "D:\Sicherung\Ordnerliste.txt" 
08.
strAusschlussliste = "D:\Sicherung\Ausschluss.txt" 
09.
 
10.
Set objOrdnerliste = fso.OpenTextFile(strOrdnerliste, 1) 
11.
Verzeichnis = Split(objOrdnerliste.ReadAll, vbCrLF) 
12.
objOrdnerliste.Close 
13.
 
14.
Set objAusschlussliste = fso.OpenTextFile(strAusschlussliste, 1) 
15.
If Not objAusschlussliste.AtEndOfStream Then 'falls nicht schon am Dateiende (= Datei ist leer) ... 
16.
	Exclude = objAusschlussliste.ReadLine ' ... erste Zeile lesen und speichern ... 
17.
Else 
18.
	Exclude = "" '... ansonsten gibt es keine Ausnahmen beim Löschen. 
19.
End If 
20.
 
21.
objAusschlussliste.Close 
22.
 
23.
Aufheben = 1 'Anzahl der Tage 
24.
 
25.
' * Ende der Anpassungen * 
26.
 
27.
Heute = Date() 
28.
For n = 0 To UBound(Verzeichnis)  
29.
	Set Ordner = fso.GetFolder(Verzeichnis(n)) 
30.
	DeleteInFolder(Ordner) 
31.
Next 
32.
 
33.
Sub DeleteInFolder(Ordner) 
34.
Set Dateien = Ordner.Files 
35.
' Alle Dateien in diesem Ordner abklappern 
36.
For Each Datei In Dateien 
37.
	If Datei.DateLastModified < (Heute - Aufheben) Then 
38.
		Ext = Mid(Datei.Name, InStrRev(Datei.Name, ".")) 
39.
		If InStr(Exclude, Ext) = 0 Then 
40.
			On Error Resume Next 
41.
			Datei.Delete 
42.
			If Err And Err <> 70 Then MsgBox "Unerwarteter Fehler (Code=" & Err & ")", vbCritical: WScript.Quit 
43.
			On Error Goto 0 
44.
		End If 
45.
	End If 
46.
Next 
47.
 
48.
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen 
49.
For Each Unter In Ordner.SubFolders 
50.
	DeleteInFolder(Unter) 
51.
	If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete 
52.
Next 
53.
End Sub
hier: http://www.administrator.de/frage/alte-dateien-nach-x-tagen-l%c3%b6sche ... gefunden.


Kann man dem Tool noch erklären, dass es die alten Dateien ERST GENAU DANN löschen darf, wenn diese Dateien an einem anderen Ort (Archiv) vorhanden sind ????


Grueße vom Dorf ...
[Edit Biber] Als <code> formatiert. [/Edit]
Mitglied: bastla
25.03.2008, aktualisiert 18.10.2012
Hallo Stylewalker!

Kann man dem Tool noch erklären, dass es die alten Dateien ERST GENAU DANN löschen darf, wenn diese Dateien an einem anderen Ort (Archiv) vorhanden sind ?
Wenn Du dem Tool (oder wenigstens mir) sagen kannst, wo (gleiche Ordnerstruktur?) / wie (nur Namensgleichheit oder zB auch gleiches Änderungsdatum?) im "Archiv" nach der jeweiligen Datei zu suchen ist ...

Abgesehen davon würde sich dafür aber vielleicht eine "Verschiebe"-Lösung (in einem der öfter hier im Forum vorkommenden Beiträge zum Thema "alte Dateien" oder "alte Ordner" - wie etwa "Robocopy - Alte Ordner verschieben" - solltest Du fündig werden) eher anbieten.

Grüße
bastla
Bitte warten ..
Mitglied: 43344
26.03.2008 um 07:06 Uhr
Morgen bastla,

zur Geschichte:

Im Moment zieh ich mit Robocopy die Dateien, die älter sind als xx Tage aus dem zu durchsuchenden Verzeichnis raus, überprüfe mit einem "if exist", ob die Datei im Archiv (auf einer zweiten Festplatte, in gleicher Ordnerstruktur) existiert, bevor diese gelöscht wird. Da die reine Überprüfung, ob die Datei "halt da" ist nicht so prall ist, wäre darüberhinaus eine Überprüfung auf z.B. gleiche Dateigröße/gleiches Änderungsdatum quzasi ideal

Gruß

Style
Bitte warten ..
Mitglied: bastla
26.03.2008 um 15:36 Uhr
Hallo Stylewalker!

... überprüfe mit einem "if exist" ...
"fc /b" wäre noch genauer als der Vergleich hinsichtlich Größe / Datum ...

Grüße
bastla
Bitte warten ..
Mitglied: 43344
31.03.2008 um 06:19 Uhr
Hast natürlich recht, funktioniert .... aber nur mal interessehalber: wie würde das mit VB aussehen???
Bitte warten ..
Mitglied: bastla
31.03.2008 um 07:46 Uhr
Hallo Stylewalker!

Da VBS keinen zu "fc" vergleichbaren Befehl kennt, könntest Du, wie oben schon angemerkt, Dateidatum und zB auch -größe vergleichen ("File.DateLastModified", "File.Size")oder trotzdem "fc" verwenden (ungetestete Skizze):
01.
If Not fc("D:\Datei1.doc", "E:\Datei1.doc") Then 
02.
	'Dateien sind unterschiedlich ... 
03.
End If 
04.
 
05.
Function fc(File1, File2) 
06.
Set objShell = CreateObject("WScript.Shell") 
07.
Set objExec = objShell.Exec("fc /b " & Chr(34) & File1 & Chr(34) & " " & Chr(34) & File2 & Chr(34)) 
08.
strResults = LCase(objExec.StdOut.ReadAll) 
09.
If InStr(strResults, "fc: keine unterschiede gefunden") Then 
10.
	fc = True 
11.
Else 
12.
	fc = False 
13.
End If 
14.
End Function
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell Kopiere Dateien in s Archiv Verzeichnis (6)

Frage von pixel0815 zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien auf der Basis einer Liste löschen (2)

Frage von symei3 zum Thema Batch & Shell ...

Batch & Shell
Batch mit forfiles - Dateiendung filtern - Dateien löschen (2)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Windows Server
gelöst Dateien in einem Ordner nach XY Tagen löschen (3)

Frage von Adnan88 zum Thema Windows Server ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (35)

Frage von FA-jka zum Thema Windows 10 ...

CMS
Lokales Wordpress im LAN - wie aufsetzen? (15)

Frage von Static zum Thema CMS ...

LAN, WAN, Wireless
Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (15)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...

Backup
Backup Wochen- Monats- Jahressicherung (13)

Frage von Meterpeter zum Thema Backup ...