d-line
Goto Top

Skript zur Bereinigung von Benutzerprofilen

Guten Tag Zusammen

Ich habe mir etwas den Kopf zerbrochen und stehe wahrscheinlich total auf dem Schlauch. Vielleicht kann mir ja jemand von euch den richtigen Input geben.

Mir ist aufgefallen, dass die Benutzerprofile auf dem Profilserver unter %appdata%\Microsoft\windows\recent sehr viele "zuletzt geöffnete Dateien" enthalten. Diese gehen aber teilweise mehr als zwei Jahre zurück. Bei gewissen Benutzern sind dort über 3000 Dateien drin, was die Ladezeit der Profile extrem verlangsamt. Klar könnte ich das Verzeichnis per Citrix UPM von der Synchronisierung ausschliessen, jedoch wäre das Geschrei dann gross, wenn einerseits die wirklich zuletzt geöffneten Dateien, und andererseits auch die angepinnten Dateien in den Jumplists verschwunden wären.

Was möchte ich erreichen?

Ich möchte auf dem Profilserver ein Skript einmal im Monat per Task Scheduler ausführen, welches alle Dateien im Verzeichnis \Recent löscht, die älter sind als 30 Tage. Dabei sollen aber die beiden Unterordner "AutomaticDestination" und "CustomDestinations", welche sich ebenfalls in diesem Verzeichnis befinden, nicht gelöscht werden. Ebenso soll deren Inhalt beibehalten werden.

Folgendes habe ich bisher hinbekommen:

@echo off
SET count=1 
SET rootPath=D:\Daten\upmprofiles\Testordner\

FOR /f "tokens=*" %%G IN ('dir %rootPath% /b /AD') DO (  
forfiles /p %rootPath%%%G\UPM_Profile\Appdata\roaming\microsoft\windows\recent\ /d -30 /c "cmd /c del @file"  

echo %count%:%rootPath%%%G

set /a count+=1 

)


pause

Das Skript funktioniert eigentlich schon recht gut. Das einzige Problem ist noch, dass er bei gewissen Profilen (nicht bei allen, obwohl die Struktur immer die Gleiche ist), nachfragt, ob er die beiden Unterordner "AutomaticDestinations" und "CustomDestinations" mit löschen soll. Wenn ich das manuell mit "Nein" beantworte, löscht er nur den Datei-Inhalt von \Recent bis auf 30 Tage zurück und geht dann zum nächsten Verzeichnis.

Wir bekomme ich es nun hin, dass nur die Files in \Recent gelöscht werden, und sonst nichts?

Danke schon im Voraus für eure Hilfe.

Content-Key: 666006

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: GarfieldBonn
GarfieldBonn Apr 22, 2021 updated at 11:04:15 (UTC)
Goto Top
'dir /A-D' listet keine Verzeichnisse
rootpath auf recent setzen sollte dann ausreichen
Member: D-Line
D-Line Apr 22, 2021 at 11:12:29 (UTC)
Goto Top
Hey Garfield

Danke für deinen Input.

Ich müsste dann aber innerhalb des Rootpaths noch die Variable für die Benutzerordner haben. Der gesamte Pfad sieht dann so aus:

D:\Daten\upmprofiles\Testordner\<Ordner mit Benutzernamen benannt>\UPM_Profile\Appdata\roaming\microsoft\windows\recent\

Es handelt sich um ca. 90 Benutzerprofil-Verzeichnisse, in denen die Dateien in Recent gelöscht werden müssten. Hast du evtl. einen Input dazu, wie ich das verschachteln muss?

Danke dir.
Member: GarfieldBonn
GarfieldBonn Apr 22, 2021 updated at 11:36:04 (UTC)
Goto Top
Wenn es der Windows-Username ist, der liegt als Variable im Betriebssystem vor
set
===
%Username%
%Userprofile%
%Appdata%

Davon sollte etwas passen

Edit:
Aber den userpfad brauchtest Du doch vorher auch schon?
Member: D-Line
D-Line Apr 22, 2021 at 11:47:40 (UTC)
Goto Top
Das mit den Variabeln weiss ich, jedoch will ich das Script auf dem Profilserver ausführen, und nicht im Userkontext in dessen Session.

Es handelt sich um ein simples Share auf der zweiten Partition eines Servers, wo die ganzen Profile abgelegt werden.
Member: GarfieldBonn
Solution GarfieldBonn Apr 22, 2021 at 12:03:12 (UTC)
Goto Top
Dann halt zwei for-schleifen. In der zweiten dann nochmal 'DIR /A-D' im recent-verzeichnis und das Ergebniss mit forfiles löschen.
Member: D-Line
D-Line Apr 23, 2021 at 08:54:04 (UTC)
Goto Top
Danke 1000

Ich habs hinbekommen.