Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Diskutiere Löschen von Dateien - VBS ??? im Webentwicklung, Hosting & Programmierung Forum im Bereich Netzwerk & Internet; Hallo,
ich habe ein Problem mit dem folgenden Skript:
Wenn ich die Variable %userprofile% durch einen richtigen Pfad ersetze, dann funktionier...
#1
E
Enrico
Bekanntes Mitglied
Themenersteller
Dabei seit
06.07.2001
Beiträge
156
Reaktionspunkte
0
Ort
Dresden
Hallo,
ich habe ein Problem mit dem folgenden Skript:
Wenn ich die Variable %userprofile% durch einen richtigen Pfad ersetze, dann funktionier das Script, aber mit der Variable nicht. Wie kann ich das ändern?
'************************************************************
'
' Löscht alle Dateien, die seit einem bestimmten Datum
' nicht mehr geändert wurden
'
'************************************************************
'******* hier eigenen Bedürfnissen anpassen *****************
Verzeichnis1 = %userprofile%\Lokale Einstellungen\Temporary Internet Files
Aufheben = 60->Anzahl der Tage
'********Ende der Anpassungen********************************
'On Error Resume Next
Set fso = CreateObject(Scripting.FileSystemObject)
Set ordner = fso.GetFolder(Verzeichnis1)
heute = Date()
DeleteInFolder(ordner)
Sub DeleteInFolder(ordner)
Set dateien = ordner.Files
' Alle Dateien in diesem Ordner abklappern
For Each datei In dateien
If datei.DateLastModified < (heute - Aufheben) Then
datei.Delete
End If
Next
Set untere = ordner.SubFolders
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen
For Each unter In untere
DeleteInFolder(unter)
Next
End Sub
set shell=createobject(wscript.shell)
Verzeichnis1=shell.expandenvironmentstrings(%userprofile%)&\Lokale Einstellungen\Temporary Internet Files
#3
E
Enrico
Bekanntes Mitglied
Themenersteller
Dabei seit
06.07.2001
Beiträge
156
Reaktionspunkte
0
Ort
Dresden
Hallo,
danke für die Antwort. Jetzt funktioniert es
Allerdings habe ich jetzt ein weiteres Problem. Wenn ich z.B. den TEMP-Ordner leeren möchte, bekomme ich die Meldung Erlaubnis verweigert von Skript ausgegeben.
Das wird wohl daran liegen, dass man manche Dateien in diesem Ordner nicht löschen kann. Wie kann ich das jetzt so umgehen, dass das Skript dann nicht einfach abstürtzt, sondern mit der nächsten Datei weiter macht?
Danke
Enrico
#4
D
Dewer
Guest
Hi!
Ersetzte die Zeile datei.delete durch diese Zeilen:
Code:
on error resume next
datei.delete
if err and err<>70 then msgbox Unerwarteter Fehler (Code=&err&),16 : wscript.quit
on error goto 0
Mit on error resume next wird der WSH angewiesen bei einem Fehler nicht zu stoppen, sondern mit der nächsten Zeile fortzufahren. In der Zeile nach datei.delete wird abgefragt ob ein Fehler aufgetreten ist.
Wenn der Fehler Erlaubnis verweigert (das ist der Fehlercode 70) ist, wird er ignoriert, ansonsten wird der Fehlercode angezeigt und das Skript beendet.
on error goto 0 hebt die Fehlerbehandlung wieder auf. Das heisst beim nächsten auftretenden Fehler bricht der WSH wieder automatisch das Skript ab.
#5
E
Enrico
Bekanntes Mitglied
Themenersteller
Dabei seit
06.07.2001
Beiträge
156
Reaktionspunkte
0
Ort
Dresden
Danke, auch das funktioniert
Jetzt habe ich mir noch überlegt mehrere Ordner zu leeren.
Könnte ich das jetzt mit einer Schleife erledigen?
Und die Schleife dann bei jedem Duchlauf das letzte Zeichen von Verzeichnis? um eins hochzählen lassen? Oder wäre das mit dem hochzählen zu kompliziert. Ganz einfach könnte ich sicher auch die Zeile Set ordner = fso.GetFolder(Verzeichnis1) dreimal hintereinander schreiben und jedesmal die Variable ordner und Verzeichnis entsprechend anpassen. Aber vielleicht geht das ja auch besser?
Grüße und danke
Enrico
#6
D
Dewer
Guest
Du meinst wohl so:
Code:
dim Verzeichnis(2)
Verzeichnis(0) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Lokale Einstellungen\Temporary Internet Files
Verzeichnis(1) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Lokale Einstellungen\Temp
Verzeichnis(2) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Cookies
for n=0 to 2
Set ordner = fso.GetFolder(Verzeichnis(n))
...
...
next
Ne andre Möglichkeit:
Code:
o=array(\Lokale Einstellungen\Temporary Internet Files,\Lokale Einstellungen\Temp,\Cookies)
for each oo in o
Set ordner = fso.GetFolder(WSHShell.ExpandEnvironmentStrings(%userprofile%)&oo)
...
...
next
#7
E
Enrico
Bekanntes Mitglied
Themenersteller
Dabei seit
06.07.2001
Beiträge
156
Reaktionspunkte
0
Ort
Dresden
Danke, du bist ja spitze
Funktioniert alles.
Hier noch mal das komplette Skript für alle, die es interessiert:
Code:
'************************************************************
'
' Löscht alle Dateien, die seit einem bestimmten Datum
' nicht mehr geändert wurden
'
'************************************************************
Set fso = CreateObject(Scripting.FileSystemObject)
Set WSHShell = WScript.CreateObject(WScript.Shell)
On Error Resume Next
'******* hier eigenen Bedürfnissen anpassen *****************
dim Verzeichnis(2)
Verzeichnis(0) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Lokale Einstellungen\Temporary Internet Files
Verzeichnis(1) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Lokale Einstellungen\Temp
Verzeichnis(2) = WSHShell.ExpandEnvironmentStrings(%userprofile%)&\Cookies
Aufheben = 14->Anzahl der Tage
'********Ende der Anpassungen********************************
for n=0 to 2
Set ordner = fso.GetFolder(Verzeichnis(n))
heute = Date()
DeleteInFolder(ordner)
next
Sub DeleteInFolder(ordner)
Set dateien = ordner.Files
' Alle Dateien in diesem Ordner abklappern
For Each datei In dateien
If datei.DateLastModified < (heute - Aufheben) Then
on error resume next
datei.delete
if err and err<>70 then msgbox Unerwarteter Fehler (Code=&err&),16 : wscript.quit
on error goto 0
End If
Next
Set untere = ordner.SubFolders
'Unterordner abklappern, DeleteInFolder rekursiv aufrufen
For Each unter In untere
DeleteInFolder(unter)
Next
End Sub