goiko123
Goto Top

Temp per Skript leeren

Leeren und nicht Löschen/Neu Erstellen

Servus allerseits,

Ich brauche ein Skript, das das Temp Verzeichnis auf Root nach der Abmeldung vom Benutzer leert. Ich habe schon einen Skript eingesetzt, das es erfolgreicht nach der Abmeldung ausführt. Allerdings wird das Verzeichnis nicht geleert, sondern gelöscht und danach neu erstellt. Das Problem dabei ist, dass danach die Berechtigungen verloren gehen und einfach diese vom Rootverzeichnis vererbt werden. Kann mir jemand dabei helfen und ein Beispielskript geben/schreiben. Ich werde sehr dankbar.
Danke im voraus.

LG: Deian

Content-Key: 65742

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

Ausgedruckt am: 29.03.2024 um 07:03 Uhr

Mitglied: TuXHunt3R
TuXHunt3R 08.08.2007 um 15:22:00 Uhr
Goto Top

del /f /s /q C:\temp\*.*



Das löscht aber keine Unterordner
Mitglied: goiko123
goiko123 08.08.2007 um 15:27:43 Uhr
Goto Top
Herzlichen Dank,

So wie es aussieht soll es auch die Unterordner löschen...
Ich probiere es mal aus...

Bis bald
Mitglied: TuXHunt3R
TuXHunt3R 08.08.2007 um 15:29:41 Uhr
Goto Top
Moment, ich bastel kurz was.............................
Mitglied: TuXHunt3R
TuXHunt3R 08.08.2007 um 15:44:43 Uhr
Goto Top

@echo off

::Daten löschen
del /f /s /q C:\temp\test\*

::Unterordner löschen
dir /s /b c:\temp\test\*. >c:\temp_leeren.log

for /f %%a IN (c:\temp_leeren.log) DO call :Loeschen %%a

goto :eof


:Loeschen
rmdir /s /q "%1"
goto end

:end



Allerdings kann das Script keine Ordner löschen, die ein Leerzeichen im Namen haben.

Vielleicht fällt mir dazu noch eine Lösung ein....
Mitglied: goiko123
goiko123 08.08.2007 um 16:08:03 Uhr
Goto Top
Sehr nett von dir,

Ich probiere es mal aus.

Vielen Dank.
Mitglied: goiko123
goiko123 08.08.2007 um 17:39:12 Uhr
Goto Top
Hi noch mal von mir,

Der kurze Script löscht (wie du gesagt hast keine Unterordner, keine versteckte Unterordner und Dateien und keine Dateien mit einer Leerzeile in dem Namen.

Der zweite (lange) Script hat leider nichts gelöscht.

Ich arbeite weiter daran und werde auch berichten.

C U
Mitglied: paulepank
paulepank 08.08.2007 um 18:55:01 Uhr
Goto Top
Hallo ihr beiden,

einfach so:
cd /d c:\temp
rd /s /q . 2>nul

cu paulepank
Mitglied: Biber
Biber 08.08.2007 um 20:29:51 Uhr
Goto Top
Moin goiko123,

wenn es wirklich um nur um den Ordner c:\temp geht, dann solltest Du es -wie auch schon richtig gepostet- in zwei Schritten machen:
- alle Unterverzeichnisse mit allen dort befindlichen Dateien und tieferen Verzeichnisebenen wegschrubbeln
- danach auf der Ebene c:\temp selbst alle Dateien löschen.

Als weiteren Schritt würde ich dazu raten, vorher alle ReadOnly/Hidden/System zu entfernen - sonst sind einige Dateien nicht löschbar.

::-------TempDelete.bat
@echo off & Attrib -s -r -h c:\temp\*.* /s /d
for /d %%i in ("c:\temp\*") do @ rd /s /q %%i >nul 2>nul  
Del /f /q c:\temp\*.* 2>nul

Gruß
Biber

Ich verschiebe den Beitrag mal nach "Batch & Shell".
Mitglied: paulepank
paulepank 08.08.2007 um 21:52:54 Uhr
Goto Top
n'Abend Biber,

Attribute entfernen ist unnötig, da "rd" die Attribute nicht interessieren.
"rd" putzt alles weg solange die Zugriffsrechte es zulassen.


Damit meine Lösung auch unter Windows 2000 funktioniert folgende Änderung:
c:
cd \temp
rd /s /q . 2>nul

cu paulepank
Mitglied: Biber
Biber 08.08.2007 um 22:10:09 Uhr
Goto Top
Moin paulepank,

stimmt, das Attribute-Entfernen ist für den RD-Befehl nicht nötig.
Danke für den Tipp.

Grüße
Biber
Mitglied: TuXHunt3R
TuXHunt3R 09.08.2007 um 21:34:40 Uhr
Goto Top
@all

goiko123 will nicht, dass der Ordner selber gelöscht wird, er will den Ordner leeren!!!!!!!!!!!!!!!


ZITAT
Allerdings wird das Verzeichnis nicht geleert, sondern gelöscht und danach neu erstellt. Das Problem dabei ist, dass danach die Berechtigungen verloren gehen und einfach diese vom Rootverzeichnis vererbt werden.
ZITAT ENDE
Mitglied: Biber
Biber 09.08.2007 um 22:05:22 Uhr
Goto Top
@TuXHunt3R
>goiko123 will nicht, dass der Ordner selber gelöscht wird, er will den Ordner leeren!!!!!!!!!!!!!!!

Biber will das auch gar nicht. Biber kann schon seit Jahren lesen.
Please have a look...
>for /d %i in ("c:\temp\*") do @echo rd /s /q %i  
rd /s /q c:\temp\190C
rd /s /q c:\temp\1E3
rd /s /q c:\temp\1F8D
rd /s /q c:\temp\2378
rd /s /q c:\temp\25AD
rd /s /q c:\temp\2D09
rd /s /q c:\temp\30B
...
-->Alle Unterverzeichnisse, die "von c:\temp abgehen" werden gelöscht
Del /f /q c:\temp\*.* 2>nul
Der Inhalt von c:\temp wird gelöscht, nicht der Ordner selbst.

Biber niemals würde armen Temp-Ordner löschen... face-wink

Grüße
Biber
Mitglied: TuXHunt3R
TuXHunt3R 09.08.2007 um 22:16:44 Uhr
Goto Top
Dann sollte ich langsam auch lesen lernen *schäm*!
Tschuldigung, soll nicht wieder vorkommen....


Der Batchgott Biber hat wie immer recht! face-smile
Mitglied: paulepank
paulepank 09.08.2007 um 23:01:33 Uhr
Goto Top
@TuXHunt3R

auch paulepank will das nicht face-smile

Hintergrund:

durch den Wechsel mit "cd" in das temp-Verzeichnis wird alles gelöscht
außer temp selbst, denn dieses Objekt ist durch das hineinwechseln gesperrt.

cu paulepank
Mitglied: goiko123
goiko123 10.08.2007 um 15:22:41 Uhr
Goto Top
Jungs,

es ist erfreulicherweise eine sehr nette Diskussion entstanden. Das freut mich auch sehr.
Ich mach den ultimativen Test.
sorry, dass ich mich nicht gemeldet habe, war überlastet.
Bis denn und danke noch mal an alle.

C U

Goiko

P.S. Folgender Script von paulepank hat einwandfrei funktioniert. Danke für die Bemühungen

@echo off
c:
cd \temp
rd /s /q . 2>nul