Delete Script für Temp Dateien

Aixx

Ensign
Registriert
Sep. 2011
Beiträge
239
Hallo,

ich bin gerade am versuchen den Inhalt von Temp Ordnern von MEHREREN Benutzern auf einem Server zu löschen .. Weiss jemand wie das funktionieren soll ? Wichtig ist ein Platzhalter für den passenden Benutzer.
Aussehen würde das ca so.

del "c:\benutzer\PLATZHALTER\lokale einstellungen\temp" /s /q

das /s bedeutet er löscht den inhalt der UNTERordner.
das /q bedeutet das er nicht nachfragt ob er datei x löschen soll.

Dazu muss wegen dem Leerzeichen in "lokale Einstellungen" der Pfad in "" sein und dann funktioniert glaube aus Prinzip schon kein Platzhalter mehr ..

Natürlich könnte ich für jeden Benutzer extra eine Zeile Code schreiben, aber ich hätte es gerne als Platzhalter, da dort viele Benutzer sind und immer wieder neue hinzukommen.

Jemand eine Idee ?
 
Nur ist das ja dann für das bestimmte Userprofil welches angemeldet ist und nicht für ALLE
 
Code:
@echo off
FOR /F %%N IN ('dir /b /a:d C:\Users') DO echo loesche C:\Users\%%N\lokale einstellungen\temp

Ausgabe:
Code:
loesche C:\Users\All\lokale einstellungen\temp
loesche C:\Users\Default\lokale einstellungen\temp
loesche C:\Users\Default\lokale einstellungen\temp
loesche C:\Users\postgres\lokale einstellungen\temp
loesche C:\Users\Public\lokale einstellungen\temp
loesche C:\Users\bla\lokale einstellungen\temp
loesche C:\Users\test\lokale einstellungen\temp

"dir /b /a:d C:\Users" listet alle Ordner in C:\Users auf.
 
Code:
for /F "delims=;" %%x in ('dir C:\Users /B /A:D') do (
del ...
)
Ungetestet.
 
Die Umgebungsvariable von jedem Nutzer auf z.b. c:\temp stellen.

Unter system-systemeigenschaften- erweitert- umgebungsvariablen
 
Code:
for /f %%i in ('dir /b "X:\profilpfad"') do del /s /q "x:\profilpfad\%%i\local\temp\"

€: zu langsam
 
Danke euch.

Hat klasse funktioniert
Ergänzung ()

Habe eine kleine Frage bzgl dieses Scripts.

for /f %%i in ('dir /b "d:\test"') do del /s /q "d:\test\%%i\lokale einstellungen\temp"
pause


er löscht zwar passend die Temp Dateien von Benutzern die A.Test heissen .. aber nicht Anton Test wenn dort ein Leerzeichen drin ist. Wie würde dies denn da funktionieren ? Und wie sieht es mit den ORDNERN in dem Temp Ordner aus ? Löscht er da auch nur Dateien in den Ordnern oder auch /Temp/123
 
Code:
for /f "delims=" %%x in ('dir C:\Users /b /a:d') do (
   rmdir /s /q "C:\Users\%%x\AppData\Local\Temp"
   mkdir "C:\Users\%%x\AppData\Local\Temp"
)
Durch das "delims=" werden die Ordner mit Leerzeichen richtig ausgegeben.
rmdir loescht alle Dateien inkl. den Ordner selbst.
mkdir erstellt einen neuen Temp Ordner. (Der Tempordner sollte immer vorhanden sein)
 
Das klappt Super .. Nun löscht er selbst bei den Benutzern mit Leerzeichen.

Habe aber immer noch ein Problem :P
Nun löscht er zwar alle Dateien aber DIE Unterordner nicht .. Wenn in Temp ein Ordner mit dem Namen "Müll" ist .. Den leert er zwar aber der Ordner bleibt bestehen ... Den soll er natürlich auch löschen.

Habe zwar gelesen das einige die rmdir funktion benutzen aber ich möchte nicht versuchen den Temp oder zu löschen da ja möglicherweise was im Zugriff ist was er ja im Moment schon super überspringt.
Nur die Unterordner die er löschen kann in denen keine Dateien im Zugriff sind soll er direkt mitlöschen.
 
del /a /f /s /q
rd /s /q

In der Reihenfolge sollte er eigentlich alles in Temp killen.
 
Geöffnete Dateien kannst du sowieso nicht löschen. Jag einfach rmdir /S /Q und mkdir drüber wie in #10 beschrieben, dann passt das.
Code:
rmdir /S /Q "C:\Users\%%x\AppData\Local\Temp"
if not exists "C:\Users\%%x\AppData\Local\Temp" mkdir "C:\Users\%%x\AppData\Local\Temp"
Ggf. solltest du auch AppData\Roaming\Temp leeren.
 
Hallo zusammen,

leider ist das Thema schon sehr alt, aber ich hoffe trotzdem dass es noch jemand liest.

Bei mir klappt das irgendwie nicht, ich möchte ebenfalls für alle Benutzer in C:\Users die Temp Ordner in Local und in Roaming löschen und neu anlegen.

Also nicht in einer Benutzerumgebung sondern per Script und Remote Management Tool.

Wenn ich die Batch lokal ausführe erscheint nur Syntaxerror

Nutze zum Test Windows 7 64 bit.

Code:
@echo off
for /f "delims=" %%x in ('dir C:\Users\ /b /a:d') do 
(
rmdir /s /q "C:\Users\%%x\AppData\Local\Temp"
mkdir "C:\Users\%%x\AppData\Local\Temp"
)


Hat jemand eine Idee oder Tipp?
 
Nach dem do die Klammer in der selben Zeile lassen. Batch macht da halt Probleme.

Code:
@echo off
for /f "delims=" %%x in ('dir C:\Users\ /b /a:d') do (
rmdir /s /q "C:\Users\%%x\AppData\Local\Temp"
mkdir "C:\Users\%%x\AppData\Local\Temp"
)
 
Zuletzt bearbeitet:
Zurück
Oben