Wsh: Dateien löschen in Ordnern und Subordnern

  • #1
P

profhase

Guest
Hallo habe ein kleines Probleme mit meinem Script das temporäre Dateien löschen soll, mir fehlt die rekursive Schleife :(

Code:
'#######################Maschinenbau Kitz######################################
'# Description: deletes Files with definable Name (also in Subfolders)    #
'# Version: 1.3                               #
'# Author: Thomas Hefke                           #
'# Date of Creation: 05/11/23 :: 10:28                    #
'# Date of last Change: 05/11/23 :: 14:05                  #
'##############################################################################

'Variablen müssen deklariert werden
option explicit
'Variablen Deklaration
Dim fso->Variable zur Object Erstellung
Dim f, fc , f1->Variablen zur Dateiensuche
Dim name, temp, help, startpfad->Hilfsvariablen zur weiteren verarbeitung
Dim pfad, Zeichen->je nach wunsch anpassbar : pfad beschreibt den Pfad aus dem die temp files gelöscht werden sollen und Zeichen bestimmt wie viele Zeichen der Vergleichsoperant hat
Dim cfi, cfo , volumen->Statistik variablen zur größe und Anzahl von Dateien / Ordnern
Dim ff, s, fsubfolder, s1->Variablen zur Dateiensuche in Subordnern
'###############################################################################

'veränderbare Pfadangabe
pfad = C:\temp\
startpfad = pfad
'Erstellung des Filesystemobjects
Set fso = CreateObject(Scripting.FileSystemObject)
'Benutzung der GetFolder Methode um oben in der Variable pfad eingegeben Pfad einzulesen
Set f = fso.GetFolder(pfad)
'Benutzung der Eigenschaft Files um alle Files des Ordners auszulesen
Set fc = f.Files
'Counter für Anzahl und Größe der gelöschten Dateien auf 0 gesetzt
cfi = 0
cfo = 0
volumen = 0
'Funktion durchsuchen wird ausgeführt
durchsuchen()

'######################################bis hier wird der Main Ordner(pfad) durchsucht

'schleife für Subordner
Set ff = F.SubFolders
Set s = fso.GetFolder(pfad)
For Each s1 in ff
Set fsubfolder = fso.getfolder(s1)
Set fc = fsubfolder.Files
pfad = startpfad&s1.name&\
durchsuchen()
cfo = cfo + 1
Next


'#################################################################Ausgabe des Ergebnisses
Wscript.Echo (Es wurden  & cfi & Dateien aus dem Pfad  &startpfad &  aus  &cfo & Subordnern gelöscht und diese Dateien hatte eine Größe von  & volumen &  Bytes  )



'Function durchsuchen mit For Schleife die alle Dateien des Ordners druchläuft
 Function durchsuchen
 For each f1 in fc
 ->Name beschränkt sich auf den ersten Buchstaben des Dateinamens
 Zeichen = f1.name
 Zeichen = Left(Zeichen,1)
->If Abfrage auf bestimmten Dateinamen der gelöscht werden soll
 If Zeichen = ~ Then->Vergleichselement
  temp = f1.name->Variable temp zum löschen wird gesetzt
  help = f1.size
  fso.deletefile(pfad&temp)-> Datei wird gelöscht
  cfi = cfi + 1->Zähler für die Ausgabe der Anzahl der gelöschten Dateien wird erhöht um 1
  volumen = volumen + help
 End if
 Next
 End function


bisher löscht er alle tempfateien also mit der ~ im Startordner und in der nächsten Stufe der Subordner, allerdings durchsucht er nicht die Subordner der Subordern ;) dafür brauch ich eben noch die Schleife ...

wär super wenn mir jmd helfen könnte

mfg
profhase
 
  • #3
ja sry hab ich erst später gesehn *g*

Code:
'#######################Maschinenbau Kitz######################################
'# Description: deletes Files with definable Name (also in Subfolders)    #
'# Version: 1.0                                #
'# Author: Thomas Hefke                            #
'# Date of Creation: 05/11/23 :: 10:28                    #
'# Date of last Change: 05/11/25 :: 13:35                   #
'##############################################################################
option explicit
Dim fso, pfad
Dim cfi, cfo, volumen
Dim datei, dateien, ordner , untere , unter
Dim Zeichen , temp , help

'###################################Object creation, setting pfad
'Creation of an Filesystemobject
Set fso = CreateObject(Scripting.FileSystemObject)
pfad = (C:\Temp\)

'Counter for amount and size of the deleted files and the subfolders 
cfi = 0
cfo = 0
volumen = 0
'######################################Main program
'GetFolder methode to read pfad
Set ordner = fso.GetFolder(pfad)
'starting sub
DeleteInFolder(ordner)

' scan all files
sub Deleteinfolder(ordner)
Set dateien = ordner.Files
For Each datei In dateien
Zeichen = datei.name
Zeichen = Left(Zeichen,1)
'searchs for files which start with ~
	If Zeichen = ~ Then 
	temp = datei.name 
	help = datei.size
	  datei.delete
	  cfi = cfi + 1->inc(counter)
	  volumen = volumen + help->add filesize to complete size of all deleted files
	End if
	Next
	
Set untere = ordner.SubFolders
'scan subfolders
For Each unter In untere
 DeleteInFolder(unter)
 cfo = cfo + 1
Next
end sub

'##################################################Status report
Wscript.Echo (Es wurden  & cfi & Dateien aus dem Pfad  &pfad &  aus  &cfo & Ordnern gelöscht und diese Dateien hatte eine Größe von  & volumen &  Bytes  )

für alle interessierten ;)
 
Thema:

Wsh: Dateien löschen in Ordnern und Subordnern

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben