Daten / Dateien schnell löschen?

Dirck

chronische Wohlfühlitis
Das Löschen großer Datenmengen kann mit Windows recht lange dauern (vor allem auf einer externen Platte), z.B. bei 500 GB und kleinen Dateien eine Stunde, zwei oder länger. Gibt es eine Möglichkeit (etwa wie es bei einer Schnellformatierung, mit der man eine gesamte Platte in Minuten oder weniger löschen kann), ein Programm, das Datenmengen (also einen Teil der Platte) schnell löscht?
 
Wie wärs mit:

Code:
format <lw>: /Q
oder
Code:
attrib -r -s -h -a /S /D <lw>:\* & del /F /S /Q <lw>:\*.* & rd /S /Q <lw>:\

*ungetestet*

<lw> durch den laufwerksbuchstaben ersetzen

Erster ruft die schnellformatierung auf
Zweiter ändert die attribute auf normal, löscht alle Dateien und anschließend noch sicherheitshalber alle Verzeichnisse.
Sollten Programme auf Dateien zugreifen auf dem Laufwerk würd ich noch vorher ein "cacls" loslassen und die Benutzerrechte (gewaltsam) umbiegen.

FYI: Das löscht die Daten nur, sie bleiben aber wiederherstellbar mit den geeigneten Tools....
 
Vielen Dank!

Ich verstehe noch nicht, wie ich bestimmte Dateien, bzw. bestimmte Verzeichnisse auf Deine beschriebene Weise löschen kann, also z.B. nur zwei Verzeichnisse komplett, statt ein ganzes Laufwerk.

Vielen Dank nochmals.
 
Sry, hab nicht genau genug gelesen.
In diesem Fall ist der erste Code (format) nicht geeignet.

Passender wäre dann:
Code:
attrib -r -s -h -a /S /D <pfad>\* & del /F /S /Q <pfad>\*.* & rd /S /Q <pfad>\

Da ich aber gerade auf meiner Win7 Maschine bin, konnte ich ein bisschen spielen und testen.
Speichere folgenden Code in einer Batch (.bat) und ziehe einfach den zu löschenden Ordner darauf:
Code:
takeown /F %1% /R
attrib -r -s -h -a /S /D %1%\*
del /F /S /Q %1%\*.*
rd /S /Q %1%\

Solltest du den Code unter einem Win OS < Vista ausführen, dann musst du die "takeown" Zeile durch ein
Code:
cacls %1%\* /P %username%:F /T
ersetzen.

Du kannst aber auch gleich die "aufgeblasene" Version mit integriertem OS-Check verwenden:
Code:
ver | findstr /i "5\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto caclsit
ver | findstr /i "5\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto caclsit
ver | findstr /i "5\.2\." > nul
IF %ERRORLEVEL% EQU 0 goto caclsit
ver | findstr /i "6\.0\." > nul
IF %ERRORLEVEL% EQU 0 goto takeit
ver | findstr /i "6\.1\." > nul
IF %ERRORLEVEL% EQU 0 goto takeit

:caclsit
cacls %1%\* /P %username%:F /T
goto weiter

:takeit
takeown /F %1% /R
goto weiter

:weiter
attrib -r -s -h -a /S /D %1%\*
del /F /S /Q %1%\*.*
rd /S /Q %1%\
exit /b

*alle codes getestet*

PS.:
Die Version mit der OS-Erkennung kann man natürlich auch kürzen auf:
Code:
ver | findstr /i "5\." > nul
If %ERRORLEVEL% EQU 0 (
	cacls %1%\* /P %username%:F /T
) else (
	takeown /F %1% /R
)
attrib -r -s -h -a /S /D %1%\*
del /F /S /Q %1%\*.*
rd /S /Q %1%\
exit /b
aber da ist die Möglichkeit gegeben, dass die Versionsnummer nach dem 2. Punkt (afair die Build-Nr) mit nem 5er beginnt wenn es aber vista oder 7 ist.
Nicht dramatisch, aber bei cacls unter 7 steht explizit dabei dass es veraltet ist, und dort wird auf Icacls verwiesen (wo ultimativ auf takeown verwiesen wird).

jm2c
 
@Razorblade:

Was würde gegen

Code:
del /f/s/q ORDNERNAME > nul
rmdir /s/q ORDNERNAME

sprechen? Im Prinzip würde es das auch tun, oder habe ich irgendwo einen Denkfehler?
 
@Claymore:
1.) Warum einfach wenns auch kompliziert geht?!?

2.) del und rm funktionieren nicht, wenn Dateien oder Ordner (zumindest) schreibgeschützt sind. Daher hat schon mal attrib seine berechtigung.
Und cacls bzw. takeown helfen wenn der Ordner z.b. ein Rest eines Updates ist (z.b. Ordner 7arega7aw45oih346q4j6bqjb4) der noch immer auf den User System gesperrt ist. Der kann dann nicht gelöscht werden...
Der fette If-Block ist wie gesagt nur zur differenzierung der Windows-Version und somit des verwendeten Programmes.
 
Von dieser Seite betrachtet stimmt das natürlich :). Ich dachte natürlich, dass es sich nicht um Systemordner handelt - quasi einen Spieleordner oder dergleichen. Vielen Dank für die Erklärung, Razorblade.
 
Schick! Thx.

In der "Aufgeblasenen" würde sich über Zeile 1 ein

:: if OS then
sehr gut machen. <- Vor allem für die Boardsuche.
 
Ok, bitte:

Code:
@echo off
If "%1" == "" (
	echo Syntaxfehler.
	exit /b
)
If "%1" == "/?" (
	echo L”scht alle Dateien und Unterverzeichnisse eines Verzeichnisses
	echo.
	echo FDEL Laufwerk:\Pfad
	echo.
	echo.  Laufwerk:\Pfad
	echo.     Bezeichnet Laufwerk und/oder Verzeichnis
	echo.
	exit /b
)

:: if OS then
:: lies die OS-Version und suche den String "5."
:: Wenn der String "5." gefunden wurde (Win 2000, WinXP, Win 2003 Server)
:: rufe cacls auf, ansonst takeown (Vista, Win 7)
:: Für eine Liste der Versionsnummern: http://www.gaijin.at/lstwinver.php
ver | findstr /i "5\." > nul
If "%ERRORLEVEL%" == "0" (
	cacls %1%\* /P %username%:F /T
) else (
	takeown /F %1% /R
)
:: entferne alle Attribute
attrib -r -s -h -a /S /D %1%\* > nul
:: lösche alle Dateien in allen Ordnern und Unterordnern
del /F /S /Q %1%\*.* > nul
:: lösche alle Ordner und Unterordner
rd /S /Q %1%\ > nul
:: beende die batch
exit /b
 
Okay, vielen, herzlichen Dank für die Codes, sieht ja ganz schön kompliziert aus.

Werde ich gleich mal ausprobieren.

Vielen Dank nochmals dafür.

Nette Grüße Dirk
 
Vielen Dank für den Link von FastCopy,

das Programm habe ich bereits, wußte gar nicht, daß man damit auch löschen kann. Werde ich mal an großen Datenmengen ausprobieren.

ein Programm, das Datenmengen (also einen Teil der Platte) schnell löscht?

In der Hoffnung, das ich das nun richtig verstanden habe.

Glaube ja, also, einen beliebige Menge von Ordnern / Dateien, die gelöscht werden sollen, statt einzig die gesamt Festplatte; z.B. also soll der Ordner "Eigene Dateien" mit Unterordnern gelöscht werden.

Vielen Dank nochmals.
 
Leider scheint - ohne, daß ich es gemessen hätte, sondern nur einfach den Löschvorgang ausreichend beobachtend - die Lösch-Geschwindigkeit bei mir aller der hier genannten Möglichkeiten nicht höher zu sein als beim normalen Löschen.

Vielen Dank nochmals für Eure Hilfe.
 
Oben