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

Dateien löschen und dabei bestimmte Dateiendungen ausschließen

Frage Entwicklung Batch & Shell

Mitglied: speedy4you

speedy4you (Level 1) - Jetzt verbinden

27.03.2008, aktualisiert 01.04.2008, 7815 Aufrufe, 10 Kommentare

Hallo Leute,
ich habe hier ein Script (Alte Dateien nach x Tagen löschen und dabei bestimmte Dateiendungen ausschließen) gefunden das genau das machen soll was ich benötige.

Ich habe da noch einige Fragen:
ich habe versucht das Script mit der Endung .vbs laufen zu lassen, es tut sich aber nix. Welche Dateiendung muss das Script haben?
Fehlt vielleicht bei diesem Script noch etwas?

Wenn ich das richtig verstehe gehören in der Ordnerliste.txt die Verzeichnisse die NICHT durchsucht werden sollen (z.B. C:\Sicherung).
In der Ausschluss.txt gehören die Dateiendungen die NICHT gelöscht werden sollen (z.B. .vbs).
Ist das richtig so??

Besten Dank schon einmal im voraus


hier noch mal das Script:
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
Mitglied: bastla
27.03.2008 um 08:48 Uhr
Hallo speedy4you!

Wenn ich das richtig verstehe gehören in der Ordnerliste.txt die Verzeichnisse die NICHT durchsucht werden sollen (z.B. C:\Sicherung).
Nein, es ist umgekehrt: Die zu durchsuchenden Ordner sind (jeweils einer pro Zeile) in die "Ordnerliste.txt" zu schreiben - mehr zu diesem Script findest Du im zitierten Thread ...

Grüße
bastla

P.S.: Scripts werden besser lesbar dargestellt, wenn Du <code>-Tags verwendest.
Bitte warten ..
Mitglied: speedy4you
27.03.2008 um 09:15 Uhr
Besten Dank für die Antwort,
vielleicht stehe ich etwas auf der "Leitung" aber wie starte ich das Script???
Bitte warten ..
Mitglied: bastla
27.03.2008 um 11:05 Uhr
Hallo speedy4you!

... wie starte ich das Script?
Unter der Annahme, dass Du das Script als "C:\Scripts\DelOld.vbs" gespeichert hättest, entweder per Doppelklick oder (von der Kommandozeile bzw aus einem Batch heraus) mit
01.
cscript //nologo "C:\Scripts\DelOld.vbs"
Um eine Rückmeldung zu erhalten, könntest Du unmittelbar vor der Zeile "Sub DeleteInFolder(Ordner)" zB eine Zeile
01.
WScript.Echo "Fertig."
einbauen.

Grüße
bastla

P.S.: Danke für die Code-Formatierung, allerdings hast Du das "</code>" etwas zu früh gesetzt (sollte erst nach dem letzten "End Sub" folgen) ...
Bitte warten ..
Mitglied: speedy4you
27.03.2008 um 11:26 Uhr
jo, </code> falsch gesetzt und schon korregiert.

Ich führe das Script mit einem doppelclick aus, so wie du es beschrieben hast.
Zu sehen ist aber nix, Dateien werden auch nicht gelöscht. Ich habe deinen Tip mit der Message mal eingebaut und es läuft durch.

Wenn ich aber die beiden .txt Dateien falsch editiert habe kann auch nichts passieren.
In der Ausschluss.txt steht .txt und .log (untereinander).
Inder Ordnerliste.txt habe ich folgendes stehen: "C:\Scripte\LOG" und "C:\Scripte\txt" auch untereinander geschrieben.

Sollte doch eigendlich richtig sein.
Bitte warten ..
Mitglied: speedy4you
27.03.2008 um 11:45 Uhr
So bin schon ein Stückchen weiter. Also es werden alle angegebenen Dateien gelöscht.
Ich möchte aber das alle *0.pdf Dateien nicht gelöscht werden. Es gibt *1.pdf und *2.pdf Dateien.
Wenn ich *0.pdf in der Ausschluss.txt eingebe werden überhaupt keine pdf dateien gelöscht.
Kann mir dabei einer Helfen?

Besten Dank schon mal an alle.
Bitte warten ..
Mitglied: speedy4you
27.03.2008 um 15:39 Uhr
hat vielleicht einer eine Idee wie ich es anstellen kann , dass die *0.pdf nicht gelöscht werden?
Bitte warten ..
Mitglied: bastla
27.03.2008 um 23:27 Uhr
Hallo speedy4you!

Dazu müssen das Script und auch die Ausschlussliste etwas angepasst werden.
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.
strOrdnerliste = "Z:\Sicherung\Ordnerliste.txt" 
07.
strAusschlussliste = "Z:\Sicherung\Ausschluss.txt" 
08.
 
09.
Aufheben = 1 'Anzahl der Tage 
10.
' * Ende der Anpassungen * 
11.
 
12.
Set objOrdnerliste = fso.OpenTextFile(strOrdnerliste, 1) 
13.
Verzeichnis = Split(objOrdnerliste.ReadAll, vbCrLF) 
14.
objOrdnerliste.Close 
15.
 
16.
Set objAusschlussliste = fso.OpenTextFile(strAusschlussliste, 1) 
17.
Exclude = Split(objAusschlussliste.ReadAll, vbCrLF) 
18.
objAusschlussliste.Close 
19.
 
20.
Heute = Date() 
21.
For n = 0 To UBound(Verzeichnis)  
22.
	Set Ordner = fso.GetFolder(Verzeichnis(n)) 
23.
	DeleteInFolder(Ordner) 
24.
Next 
25.
 
26.
Sub DeleteInFolder(Ordner) 
27.
Set Dateien = Ordner.Files 
28.
' Alle Dateien in diesem Ordner abklappern 
29.
For Each Datei In Dateien 
30.
	If Datei.DateLastModified < (Heute - Aufheben) Then 
31.
		ToKeep = False 
32.
		For Each Ex In Exclude 
33.
			If LCase(Right(Datei.Name, Len(Ex))) = LCase(Ex) Then 
34.
				ToKeep = True 
35.
				Exit For 
36.
			End If 
37.
		Next 
38.
		If Not ToKeep Then 
39.
			On Error Resume Next 
40.
			Datei.Delete 
41.
			If Err And Err <> 70 Then MsgBox "Unerwarteter Fehler (Code=" & Err & ")", vbCritical: WScript.Quit 
42.
			On Error Goto 0 
43.
		End If 
44.
	End If 
45.
Next 
46.
 
47.
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen 
48.
For Each Unter In Ordner.SubFolders 
49.
	DeleteInFolder(Unter) 
50.
	If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete 
51.
Next 
52.
End Sub
Die "Ausschluss.txt" muss jetzt zeilenweise die auszuschließenden Endungen enthalten, zB:
01.
.doc 
02.
.rtf 
03.
0.pdf
"Endungen" ist dabei so zu verstehen, dass der letzte Teil des Dateinamens (inkl Extension) geprüft wird.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
31.03.2008 um 07:12 Uhr
Moin speedy4you,

klingt nett, dieses..
Besten Dank schon einmal im voraus
... aber ich kann dann immer nicht erkennen, ob die Lösungsvorschläge geholfen haben.
Gibst Du bitte noch mal Feedback im Forum?

Danke
Biber
Bitte warten ..
Mitglied: speedy4you
31.03.2008 um 07:56 Uhr
Hallo Biber,
ich habe es leider noch nicht ausprobiert, weiss nicht ob ich heute dazu komme.
Spätestens morgen werde ich aber testen und natürlich bekommst Du dann auch eine Rückinfo.

Besten Dank schon einmal im voraus.
Bitte warten ..
Mitglied: speedy4you
01.04.2008 um 10:45 Uhr
Hallo Biber,
es scheint zu funktionieren. Werde es aber noch genauer testen müssen.
Besten Dank für die Hilfe.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Entwicklung
Versteckte .(Punkt)Dateien löschen (3)

Frage von DarkJM zum Thema Entwicklung ...

Batch & Shell
gelöst Powershell ältere Dateien löschen (6)

Frage von Cougar77 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...