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

Frage Entwicklung VB for Applications

GELÖST

per VB Script leere (Unter)ordner löschen

Mitglied: Marcel1981

Marcel1981 (Level 1) - Jetzt verbinden

22.04.2009, aktualisiert 18.10.2012, 8445 Aufrufe, 12 Kommentare

Hallo, bin schon länger im Netz und in meinem Gehirn auf der Suche, welches Dateien UND UNTERORDNER in einem von mir gewählten VZ löscht.
Mit Dateien funktioniert das einwandfrei, allerdings werden die dann leergewordenen (Unter)ordner nicht gelöscht.
Dies sollte eigentlich im unteren Teil des Scriptes passieren. Wo ist der (Denk)fehler?


'*
'
' Löscht alle Dateien, die seit einem bestimmten Datum
' nicht mehr geändert wurden (in diesem Bsp. ein Tag bzw. 24h)
'
'*
'
'*
dim fso
dim Verzeichnis(1)
Verzeichnis(0) = "D:\Temp\*"
Verzeichnis(1) = "D:\Temp1\*"

Aufheben = 1 'Anzahl Tage

'*

Set fso = CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next

for n=0 to 2
Set ordner = fso.GetFolder(Verzeichnis(n))
jetzt = now()
DeleteInFolder(ordner)
next

Sub DeleteInFolder(ordner)
Set dateien = ordner.Files
' Alle Dateien in diesem Ordner abklappern
For Each datei In dateien
If datei.DateLastModified < (jetzt) Then
on error resume next
datei.delete
End If
Next
Set untere = ordner.SubFolders
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen
For Each unter In untere
If Unter.DateCreated < (jetzt) Then
DeleteInFolder(Unter)
End If
Next
End Sub
'*
Mitglied: AndreasHoster
22.04.2009 um 15:42 Uhr
Ich sehe nicht, wo Du Ordner löschen willst, ich sehe nur ein datei.delete.
Bitte warten ..
Mitglied: Marcel1981
22.04.2009 um 15:46 Uhr
Jetzt wo dus sagst ;)
Syntax?
Bitte warten ..
Mitglied: AndreasHoster
22.04.2009 um 16:06 Uhr
Syntax: unter.delete
Allgemein: FolderObjekt.delete

Du müsstest halt vorher schauen, ob es Dateien oder Unterordner unter dem Ordner gibt.
Müsste man aber über FolderObjekt.SubFolders und FolderObjekt.Files rausbekommen.
Bitte warten ..
Mitglied: bastla
22.04.2009, aktualisiert 18.10.2012
Hallo Marcel1981!

Das Script erinnert ein wenig an diesen Beitrag - dort gibt es dann auch noch die Zeile
01.
If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete
zum Aurfäumen nach dem (rekursiven) Aufruf von "DeleteInFolder()" - sollte eigentlich auch hier passen ...

Grüße
bastla

P.S.: Wäre das Script mit Code-Formatierung gepostet, hätte ich auch gerne eine Zeilennummer für die Position zum Einfügen dieser Zeile vorgeschlagen (ist aber vermutlich auch ohne zu schaffen ) ...
Bitte warten ..
Mitglied: Marcel1981
23.04.2009 um 08:57 Uhr
Hallo zusammen!
Ich nehme an, da unten ist der Aufruf und die Syntax richtig, er tut aber einfach nicht.
Ausserdem meine ich, dass dort ein end if fehlt, nehme ich es rein meckert er aber "Anweisung erwartet"

01.
'***************************************************************** 
02.
03.
' Löscht alle Dateien, die seit einem bestimmten Datum 
04.
' nicht mehr geändert wurden (in diesem Bsp. ein Tag bzw. 24h) 
05.
06.
'***************************************************************** 
07.
08.
'***************************************************************** 
09.
dim fso 
10.
dim Verzeichnis(1) 
11.
Verzeichnis(0) = "D:\Temp\*" 
12.
Verzeichnis(1) = "D:\Temp1\*" 
13.
 
14.
Aufheben    = 1 'Anzahl Tage 
15.
 
16.
'***************************************************************** 
17.
 
18.
Set fso = CreateObject("Scripting.FileSystemObject") 
19.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
20.
On Error Resume Next                                               
21.
 
22.
for n=0 to 2 
23.
	Set ordner = fso.GetFolder(Verzeichnis(n)) 
24.
	jetzt = now() 
25.
	DeleteInFolder(ordner) 
26.
next 
27.
 
28.
Sub DeleteInFolder(ordner) 
29.
	Set dateien = ordner.Files 
30.
	' Alle Dateien in diesem Ordner abklappern 
31.
	For Each datei In dateien	   
32.
          If datei.DateLastModified < (jetzt) Then 
33.
	    on error resume next 
34.
	     datei.delete	 
35.
	  End If 
36.
	Next 
37.
	Set untere = ordner.SubFolders 
38.
	'Unterordner abklappern, DeleteInFolder rekursiv aufrufen 
39.
	For Each unter In untere 
40.
	  If Unter.DateCreated < (jetzt) Then  
41.
	    DeleteInFolder(Unter) 	 
42.
	    If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete 
43.
	  End If 
44.
	Next 
45.
End Sub 
46.
'*****************************************************************
Bitte warten ..
Mitglied: AndreasHoster
23.04.2009 um 09:31 Uhr
Ich habe das Skript ausprobiert, es funktioniert bei mir.
Die Frage ist, was genau tut nicht.
Löscht er Dateien nicht, Ordner nicht, beides nicht, alle nicht, nur bestimmte nicht ...

Zum End If wenn man den EINZIGEN Befehl im Then Block direkt dahinter schreibt, dann braucht man kein End if.
Und durch das On Error Resume Next bekommst Du auch gar nicht mit, wenn ein Fehler auftritt, z.B. Zugriff verweigert.
Bitte warten ..
Mitglied: Marcel1981
23.04.2009 um 09:38 Uhr
Die Dateien sind raus aber die leeren Ordner bleiben bestehen
Bitte warten ..
Mitglied: AndreasHoster
23.04.2009 um 10:56 Uhr
Nein, bei mir hat er auch die Unterordner unterhalb der angegebenen Order gelöscht. Die angegebenen Ordner natürlich nicht. Ist auch nicht so programmiert
Bitte warten ..
Mitglied: Marcel1981
23.04.2009 um 14:16 Uhr
Ich habe mich falsch ausgedrückt:
Ordner Temp und Temp1 bleiben bestehen, ist ja so gewollt und wie du sagst auch so programmiert, aber wenn sich in diesen Ordnern nun (leere) Unterordner befinden, bleiben die auch nach ausführen des Scriptes bestehen. Das isses ja was mich so irre macht
Bitte warten ..
Mitglied: AndreasHoster
23.04.2009 um 14:43 Uhr
Wie gesagt, an der Logik des Skriptes liegts nicht, da es bei mir tut.
Nimm mal die On Error Resume Next Anweisungen raus, dann müsste es Fehlermeldungen geben, wenn er den Delete nicht ausführen kann.
Bitte warten ..
Mitglied: bastla
23.04.2009 um 15:54 Uhr
Hallo Marcel1981!

Eigentlich bin ich überrascht, dass überhaupt etwas gelöscht wird - der Stern am Ende der Pfadangaben in den Zeilen 11 und 12 gehört dort nicht hin und sorgt bei mir für die Fehlermeldung "Der Pfad wurde nicht gefunden." (was Du nur sehen wirst, wenn Du, wie AndreasHoster schon empfohlen hat, "On Error Resume Next" auskommentierst - in der Testphase eigentlich ohnehin Pflicht).

Außerdem gibt es kein Verzeichnis(2), was aufgrund der Schleife in Zeile 22 den nächsten Fehler produziert - besser wäre hier die Schreibweise
For n = 0 to UBound(Verzeichnis)
Ansonsten macht das Script auch bei mir, was es soll ...

Grüße
bastla
Bitte warten ..
Mitglied: Marcel1981
23.04.2009 um 16:32 Uhr
Hallo nochmal,

die Sternchen sind überbleibsel vom testen, genau wie die 2 bei n, im Grunde ist es eh nur ein VZ was "gesäubert werden soll.
Danke für eurer aller Mühe! So läuft es jetzt!

01.
'***************************************************************** 
02.
03.
' Löscht alle Dateien, die seit einem bestimmten Datum 
04.
' nicht mehr geändert wurden (in diesem Bsp. ein Tag bzw. 24h) 
05.
06.
'***************************************************************** 
07.
08.
'***************************************************************** 
09.
dim fso 
10.
dim Verzeichnis(1) 
11.
Verzeichnis(0) = "D:\Temp\" 
12.
Verzeichnis(1) = "D:\Temp1\" 
13.
 
14.
Aufheben    = 1 'Anzahl Tage 
15.
 
16.
'***************************************************************16 
17.
 
18.
Set fso = CreateObject("Scripting.FileSystemObject") 
19.
Set WSHShell = WScript.CreateObject("WScript.Shell") 
20.
On Error Resume Next                                               
21.
 
22.
for n=0 to 1 
23.
	Set ordner = fso.GetFolder(Verzeichnis(n)) 
24.
	jetzt = now() 
25.
	DeleteInFolder(ordner) 
26.
next 
27.
 
28.
Sub DeleteInFolder(ordner) 
29.
	Set dateien = ordner.Files 
30.
	' Alle Dateien in diesem Ordner abklappern 
31.
	For Each datei In dateien	   
32.
          If datei.DateLastModified < (jetzt-aufheben) Then 
33.
	    'on error resume next 
34.
	     datei.delete	 
35.
	  End If 
36.
	Next 
37.
	Set untere = ordner.SubFolders 
38.
	'Unterordner abklappern, DeleteInFolder rekursiv aufrufen 
39.
	For Each unter In untere 
40.
	  If Unter.DateCreated < (jetzt-aufheben) Then  
41.
	    DeleteInFolder(Unter) 	 
42.
	    If (Unter.SubFolders.Count + Unter.Files.Count) = 0 Then Unter.Delete 
43.
	  End If 
44.
	Next 
45.
End Sub 
46.
'*****************************************************************
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Verknüpfungen von leeren Ordnern löschen
Frage von AmiKegoBatch & Shell2 Kommentare

Hallo, ich schreibe gerade ein Skript mit Batch das leere Ordner mit Unterordner löscht. Jetzt will ich es ein ...

Batch & Shell
Powershell - Wenn ein Ordner leer ist, diesen auch löschen hinzufügen?
gelöst Frage von pixel0815Batch & Shell2 Kommentare

Hallo zusammen, das Skript läuft gut und ich dachte kurz darüber Nach ob es möglich ist ohne großen Aufwand ...

VB for Applications
VB Script rekursiv statt nur ein Ordner
gelöst Frage von SaschaaaaaVB for Applications4 Kommentare

Hallo Community, ich beginne gerade erst mich in die verschiedensten Sprachen einzulesen und habe momentan ein kleines Problem bei ...

Batch & Shell
Poweshell Script soll String ersetzen und die leere Zeile löschen
gelöst Frage von Mars123Batch & Shell4 Kommentare

Guten Tag, ich habe heute an einem Script gearbeitet, dass rekursiv mehrere Dateien nach einem String durchsucht und diesen ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...