7036
Goto Top

Temporären Ordner des Users beim Abmelden löschen

Hi,

mit der Systemvariable %USERPROFILE% kann ich den Profilpfad eines Users anzeigen lassen.
wie kann ich nun diese Variable nutzen um den Temporären Ordner bzw. den Temp Ordner des jeweiligen Users zu löschen?

Ich denke da an ein Script im Abmeldevorgang des Users!

Danke, ist dringend...

Content-Key: 18099

Url: https://administrator.de/contentid/18099

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: Joschi1979
Joschi1979 20.10.2005 um 11:37:24 Uhr
Goto Top
schreib halt ein script, dass den jeweiligen temp ordner löscht, und hänge das beim logout in die gruppenrichtlinie rein!
Mitglied: 7036
7036 20.10.2005 um 11:40:22 Uhr
Goto Top
Hi,

hab ich ja... kann jedoch nicht alles drin löschen!!!

Mit
del "%USERPROFILE%\xxx\*.*" /S /Q
löscht er mir nicht alles!!!
Das ist mein Prob.
z.b. Schreibgeschützte Dateien werden nicht gelöscht sondern übergangen!!!

Hast Du einen Tipp für mich
Mitglied: Joschi1979
Joschi1979 20.10.2005 um 11:41:50 Uhr
Goto Top
kannst du den ordner umbenennen? weil dann benenne ihn um lösch den inhalt und dann wieder zurrückbenennen!
Mitglied: 7036
7036 20.10.2005 um 11:50:08 Uhr
Goto Top
fänd ich etwas abenteuerlich...

kennst du noch einen anderen Weg!!!
Mitglied: Biber
Biber 20.10.2005 um 14:04:46 Uhr
Goto Top
Moin Siggi,
> fänd ich etwas abenteuerlich...
..ich auch...

Du kannst vor Deinem Del-Befehl die ganzen Attribute Versteckt/System/Readonly entfernen mit dem CMD-Befehl Attrib.
>attrib /?
Zeigt Dateiattribute an oder ändert sie.

ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[Laufwerk:] [Pfad] Dateiname]
       [/S [/D]]

  +   Setzt ein Attribut.
  -   Löscht ein Attribut.
  R   Attribut für 'Schreibgeschützte Datei'  
  A   Attribut für 'Zu archivierende Datei'  
  S   Attribut für 'Systemdatei'  
  H   Attribut für 'Versteckte Datei'  
  /S  Verarbeitet übereinstimmende Dateien im aktuellen Ordner
      und in allen Unterordnern.
  /D  Verarbeitet auch die Ordner.

Allerdings: Dennoch werden eventuell ein paar Dateien übrig bleiben, die gerade geöffnet und deshalb tabu sind. Die erwischt Du aber in der nächsten Runde.
Und, was nicht auszuschließen ist bei den heutigen Programmier-Schlampereien, es kann natürlich sein, dass sich irgendein bekloppter Coder etwas dabei gedacht hat, im %temp%-Ordner eine versteckte oder schreibgeschützte Datei zu hinterlegen. Und dort "wichtige" Infos speichert. Nicht lachen - es gibt solche Spezialisten.

Wenn Dir das nichts ausmacht, eine Zeile vor dem DEL:
attrib -r -s -h "%USERPROFILE%\xxx\*.*" /s /d

HTH
Frank / der Biber aus Bremen
Mitglied: 7036
7036 20.10.2005 um 14:14:47 Uhr
Goto Top
Alles klar,

Prob ich...
Greetings
Mitglied: nafetS
nafetS 05.01.2006 um 20:22:45 Uhr
Goto Top
Hallo.

Wollte nicht extra einen neuen Beitrag aufmachen, da dieser ja schon im Groben enthält um was es mir geht.

Ich habe, zum ersten Mal wohlgemerkt, versucht ein Sript zu schreiben welches einige Verzeichnisse beim Startvorgang entleert. Das ganze als Batchdatei gespeichert und in den Autostartordner gepackt.

Problem er löscht nicht alles. Die Ordner enthalten noch diverse .txt oder andere Dateien und Ordner. Kann mir jemand sagen wo mein Denkfehler liegt?

attrib -r "%UserProfile%\Lokale Einstellungen\Verlauf\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Verlauf\*.*" /s /q

attrib -r "%UserProfile%\Lokale Einstellungen\Temporary Internet Files\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Temporary Internet Files\*.*" /s /q

attrib -r "%UserProfile%\Lokale Einstellungen\Temp\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Temp\*.*" /s /q

attrib -r "%UserProfile%\Recent\*.*" /s /d
DEL "%UserProfile%\Recent\*.*" /s /q

attrib -r "%UserProfile%\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\*.*" /s /d
DEL "%UserProfile%\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\*.*" /s /q

attrib -r "%ProgramFiles%\InstallShield Installation Information\*.*" /s /d
DEL "%ProgramFiles%\InstallShield Installation Information\*.*" /s /q

attrib -r "%WinDir%\Temp\*.*" /s /d
DEL "%WinDir%\Temp\*.*" /s /q

Danke im Voraus.

PS: Die leerzeilen habe ich hier nur zwecks Übersichtlichkeit eingefügt.
Mitglied: Biber
Biber 05.01.2006 um 20:47:06 Uhr
Goto Top
Moin, nafetS,

der Denkfehler liegt darin, dass ja nicht nur ReadOnly-Dateien in diesen Ordnern sein können, sondern auch
a) Dateien mit den Attributen System und Hidden (also ist eine Erweiterung auf Attrib ...-H -S sinnvoll)
b) auch Unter-Ordner Hidden/ReadOnly/System-Attribute haben können. Also nochmal erweitern auf .../D (Directories einschließen)

HTH Biber
[Edit]
Sorry, nafetS - der Schalter /D war schon drin.
Ich war vorhin gedanklich mehr bei Renés Abschiedsbeitrag und der Sorge um dieses Forum und konnte mich nicht auf temporäre Dateien eines Benutzers konzentrieren.
[/Edit]
Mitglied: nafetS
nafetS 05.01.2006 um 22:33:34 Uhr
Goto Top
Super Danke für die schnelle Antwort. Eine Frage muss ich dazu aber nochmal stellen. Der Schalter /d ist doch bei dem Atrib Befehl schon mit angefügt oder meinst du jetzt einen anderen.
Mitglied: nafetS
nafetS 06.01.2006 um 13:05:36 Uhr
Goto Top
Ok das Script habe ich nun angepasst, leider verbleiben immer noch einige Ordner und .txt

attrib -r -H -S "%UserProfile%\Lokale Einstellungen\Verlauf\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Verlauf\*.*" /s /q

attrib -r -H -S "%UserProfile%\Lokale Einstellungen\Temporary Internet Files\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Temporary Internet Files\*.*" /s /q

attrib -r -H -S "%UserProfile%\Lokale Einstellungen\Temp\*.*" /s /d
DEL "%UserProfile%\Lokale Einstellungen\Temp\*.*" /s /q

attrib -r -H -S "%UserProfile%\Recent\*.*" /s /d
DEL "%UserProfile%\Recent\*.*" /s /q

attrib -r -H -S "%UserProfile%\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\*.*" /s /d
DEL "%UserProfile%\Anwendungsdaten\Microsoft\Office\Zuletzt verwendet\*.*" /s /q

attrib -r -H -S "%ProgramFiles%\InstallShield Installation Information\*.*" /s /d
DEL "%ProgramFiles%\InstallShield Installation Information\*.*" /s /q

attrib -r -H -S "%WinDir%\Temp\*.*" /s /d
DEL "%WinDir%\Temp\*.*" /s /q
Mitglied: Biber
Biber 06.01.2006 um 14:49:18 Uhr
Goto Top
Moin nafetS,

na ja, es gibt dann noch den Schalter /F bei dem DEL-Befehl. Sorry, hatte ich vergessen (siehe oben).
Der Parameter erzwingt das Löschen schreibgeschützter Dateien.

Hilfreich wäre jetzt auch ein bisschen mehr Detailtiefe:
Was sind das denn für Dateien? Besondere Attribute?
Einige (insbesondere im "normalen" Temp-Verzeichnis werden sich auch nicht löschen lassen, weil die noch aktuell geöffnet sind.
Die erwischt Du nach dem nächsten Systemstart.

BTW, ist eigentlich der Threadowner ausgewandert? Der wollte doch auch noch recherchieren, oder?

Gruß Biber
Mitglied: nafetS
nafetS 06.01.2006 um 20:44:05 Uhr
Goto Top
Gut also es betrifft die Verzeichnisse:

C:\WINDOWS\Temp wodrin die "unlöschbaren" Ordner Cookies, hsperfdata_SYSTEM, mcv5.tmp, Temp. Int. Files und Verlauf sind. Selbiges im Userprofile/Lokale Einstellungen/Temp und Temporary Internet Files sowie Verlauf.

Die Dateien und Ordner sind nicht versteckt aber Schreibgeschützt. Das Häckchen für den Schreibschutz ist ausgegraut wie bei einer Vererbung.

Temporary Internet Files enthält diverse Bilder und Cookies. Sowie selbst erstellte Ordner und .txt Dateien die ich zu Testzwecken da reingetan hab.
Mitglied: Biber
Biber 06.01.2006 um 21:47:22 Uhr
Goto Top
Hmmm, nafetS,
dann müssen wir das Ganze vielleicht mal etwas ernsthafter betreiben...

Ich habe schon mal an einem etwas saubereren Batch für diesen Zweck mitgebastelt, und (ich hab eben noch mal in den alten Sourcen gewühlt), der Unterschied war, das es damals auch erst nach mehreren Anläufen funktionierte - nachdem die einzelnen Unterordner einzeln durchgewackelt wurden lustigen FOR /F-Schleifen.
Das heißt, die eigentlich von M$ dafür vorgesehenen Befehle "For /D .." bzw "For ... /R" fassen da daneben, weil denen ja auch wieder "unsichtbare" und "System"-Unterzeichnisse durch die virtuellen Lappen gehen.

Das passiert hier möglicherweise auch sinngemäß - ich denke, mein Denkfehler war hier das (versuchte) Wegnahmen der Special-Attribute bei den Windows-"Halb"-Systemordnern wie "Verlauf" oder "Temporary Internet Files" ... weiß der Bill, wer da als Eigentümer eingetragen ist oder wer außer Billies Mama diese löschen dürfte...

Vorschlag: Verzichte an der Stelle auf Vollständigkeit, lösche an Ballast weg, was geht und lasse die "besonderen Ordner" Verlauf etc. wie und wo sie sind.

Denn die Alternative ist grauslich... ich poste hier mal einen kleinen Auszug aus dem (funktionierenden) robusten Batch... den ganzen willst Du gar nicht haben *ggg

Set "ProfileSubDirs=.\PSubdirs.txt"
>%ProfileSubDirs% echo "Lokale Einstellungen\Temp"
%ProfileSubDirs% echo "Cookies"
%ProfileSubDirs% echo "Lokale Einstellungen\Verlauf"
%ProfileSubDirs% echo "Lokale Einstellungen\Temporary Internet Files"
%ProfileSubDirs% echo "Anwendungsdaten\Microsoft\Office\Zuletzt verwendet"
%ProfileSubDirs% echo "Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning"

Set "WinDirSubDirs=.\WSubdirs.txt"
>%WinDirSubDirs% echo "%WinDirRoot%\Cookies"
%WinDirSubDirs% echo "%WinDirRoot%\Prefetch"
%WinDirSubDirs% echo "%WinDirRoot%\Temp"
%WinDirSubDirs% echo "%WinDirRoot%\Temporary Internet Files"
%WinDirSubDirs% echo "%WinDirRoot%\system32\config\systemprofile\recent"

DIR /A /D /B "%WinDirRoot%\$*$">".\WinDirRoot.txt"
DIR /A /D /B "%ProfileRoot%">".\Benutzer.txt"

FOR /f "tokens=*" %%f IN (.\Benutzer.txt) DO (
For /F "delims=" %%a in (%ProfileSubdirs%) do (
if exist "%ProfileRoot%\%%f\%%~a" (
attrib -r -a -s -h "%ProfileRoot%\%%f\%%~a" /s /d
) ) )
FOR /f "tokens=*" %%f IN (%WinDirSubDirs%) DO (
IF EXIST "%%~f" (
attrib -r -a -s -h "%%~f" /s /d
)
)

usw. usw.....
Aber so ein Quatsch gehört eher in "Batch und Shell" als in "Windows Server", die Mods erschlagen mich hier *ggg

Ich plädiere dafür, diesen Thread ruhen zu lassen, bis sich der Threadowner zurückmeldet.
Der hat vielleicht eine einfachere Lösung.

Grüße
Biber
Mitglied: nafetS
nafetS 09.01.2006 um 08:07:36 Uhr
Goto Top
uuups Sorry hatte nach dem Problem gegoogelt und diesen Beitrag gefunden. Dabei aber nicht auf das Forum geachtet in welchem ich das schreibe.
Mitglied: nafetS
nafetS 11.01.2006 um 20:07:24 Uhr
Goto Top
Trotz das es das falsche Forum ist wollte ich wenigstens noch den Rest ergänzen.

Das PRoblem das einige Dateien nicht gelöscht werden besteht darin das ihnen scheinbar die Eigenschaften der Übergeordneten Ordner vererbt werden.

In einem Test in dem ich für das gesamte %userprofile% die Attribute H/R/S entfernte liessen sich nämlich alle Dateien entfernen.

Allerdings hatte der Befehl verheerende Konsequenzen denn das gesamte User Profil liegt nun für jeden einsehbar im Verzeichniss. Also keine sonderlich saubere Lösung. Selbst mit Umkehrung der Attributentfernung war das nicht zu reparieren denn jetzt werden in allen möglichen Quick Launch Leisten und StartMenü zb. die Desktop.ini mit angezeigt, auch nicht unbedingt schön.

Ich muss Biber hier wohl recht geben mit einer einfachen Batch datei ist das so nicht zu händeln oder sehr umständlich zu schreiben.

Leider schliesst *.* beim Löschbefehl nicht die im Verzeichnis liegenden Ordner mit ein.
Mitglied: Biber
Biber 11.01.2006 um 20:35:23 Uhr
Goto Top
Danke, nafetS,

dass Du auch die richtigen Schlussworte für diesen Thread gefunden hast.
Ich hatte auch überlegt, ob ich noch einen Kommentar daruntersetze, um es nochmal deutlich zu machen:
- dieses "100%ige vollständige Löschen" aller (temporären) Dateien eines Users ist mühselig. Wenn es nur darum geht, ein paar MegaByte Plattenplatz freizugeben, dann sollte man/frau sich damit zufrieden geben, wenn 95% der Dateien/Ordner erwischt werden.

- wenn tatsächlich ALLE Dateien/Ordner in "TEMP"-Verzeichnissen gelöscht werden, stellt sich möglicherweise hinterher heraus, dass doch "wichtige" Dateien dabei waren, z.B. die Uninstall-Routine eines Shareware-Programs oder die automatische Sicherung eines Powerpoint-Entwurfs.. Einige Programmierer/innen haben ein merkwürdiges Verständnis davon, welche Daten in ein TEMP-Verzeichnis gehören.

-der Ausschnitt aus dem obigen Batch: dieser Batch ist auch für einen anderen Zweck gedacht. Der beseitigt auch alle (oder ziemlich viele) Spuren von Benutzern, die sich aber auch nie wieder an diesem System anmelden werden. Ist also eine Art Schlussstrich - das würde ich sicherlich nicht so bei jedem Herunterfahren z.B. meines Accounts machen.

Kurzgefasst - wie oben geschrieben: lösch weg, was sich problemlos löschen lässt. Der Rest.. mein Gott, beim nächsten Mal.. oder beim Frühjahrsputz...

Gruß Biber