- Offizieller Beitrag
hallo! Hier habe ich mal wider ein Programm geschrieben mit dem mann:
-Ornder löschen kann, wo aber nicht die Ordner sondern nur alle unterordner gelöscht werden, aber bevor die unterordner gelöscht werden, werden alle unter(unter(unter(usw..)))dateien entfernt!
-mit dem man alle dateien aus einem Ordner löschen kann, aber ohne die Unter(unter(usw..))Ordner zu löschen sondern halt nur die dateien!
naja hier das skript:
C
#include <file.au3>
#include <GUIConstants.au3>
$dir = 0
$Form1 = GUICreate("Delete Dir's", 534, 230, 194, 125)
$lab = GUICtrlCreateLabel("Warte auf eingabeaufforderungen...", 0, 192, 533, 27)
$Progress1 = GUICtrlCreateProgress(0, 168, 534, 17)
GUICtrlSetColor(-1, 0xC5E7F6)
$Avi1 = GUICtrlCreateAvi("shell32.dll", 164, 0, 0, 304, 60)
$Radio1 = GUICtrlCreateRadio("Alle Ordner Löschen", 0, 64, 121, 17)
$Radio2 = GUICtrlCreateRadio("Nur Dateien Lösche(Ordnerstrucktur bleibt)", 0, 80, 233, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Ordner1 = GUICtrlCreateInput(FileGetLongName(@TempDir), 304, 16, 193, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("Ordner1", 304, 0, 42, 17)
$Button1 = GUICtrlCreateButton("..", 496, 16, 27, 25)
$Checkbox1 = GUICtrlCreateCheckbox("Aktiviert", 360, 0, 97, 15)
GUICtrlSetState(-1, $GUI_CHECKED)
$ordner2 = GUICtrlCreateInput("", 304, 56, 193, 21, -1, $WS_EX_CLIENTEDGE)
$drive =""
$ss = StringSplit(@TempDir,"")
For $for = 1 To $ss[0]-1
$drive = $drive & $ss[$for] &""
Next
$drive = $drive & "Temporary Internet Files"
GUICtrlSetData($ordner2,FileGetLongName($drive))
GUICtrlCreateLabel("Ordner2", 304, 40, 44, 17)
$Button2 = GUICtrlCreateButton("..", 496, 56, 27, 25)
$Checkbox2 = GUICtrlCreateCheckbox("Aktiviert", 360, 40, 97, 15)
GUICtrlSetState(-1, $GUI_CHECKED)
$Ordner3 = GUICtrlCreateInput("", 304, 96, 193, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("Ordner3", 304, 80, 42, 17)
$Button3 = GUICtrlCreateButton("..", 496, 96, 27, 25)
$Checkbox3 = GUICtrlCreateCheckbox("Aktiviert", 360, 80, 97, 15)
$start = GUICtrlCreateButton("Start >", 0, 104, 299, 57)
GUICtrlSetFont(-1, 20, 400, 0, "Arial Black")
GUISetState(@SW_SHOW)
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Button1
$fsf = FileSelectFolder("Ordner 1","")
If @error Then ContinueLoop
GUICtrlSetData($Ordner1,$fsf)
Case $msg = $Button2
$fsf = FileSelectFolder("Ordner 2","")
If @error Then ContinueLoop
GUICtrlSetData($Ordner2,$fsf)
Case $msg = $Button3
$fsf = FileSelectFolder("Ordner 3","")
If @error Then ContinueLoop
GUICtrlSetData($Ordner3,$fsf)
Case $msg = $start
If GUICtrlRead($Radio1) = $GUI_CHECKED Then $dir = 1
GUICtrlSetState($start,$GUI_DISABLE)
If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
If StringLeft(GUICtrlRead($Ordner1),StringLen(@WindowsDir)) = @WindowsDir Then
If MsgBox(52,"Windows?","Der Ordner"&@CR&GUICtrlRead($Ordner1)&@Cr&"ist im Windows Ordner! Wollen Sie ihn wirklich löschen?") = 7 Then
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
EndIf
If not FileExists(GUICtrlRead($Ordner1)) Then
MsgBox(48,"!!","Der Ordner"&@CR&GUICtrlRead($Ordner1)&@Cr&"wurde nicht gefunden!")
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
Global $FOLDERS_TO_SEARCH_IN[2] = [1, GUICtrlRead($Ordner1)]
Global $DRIVE_SIZE = DirGetSize(GUICtrlRead($Ordner1), 1)
Global $FILES_SCANNED = 0
Global $LAST_PROGRESS_DATA = 0
Global $NEW_PROGRESS_DATA = 0
ScanFolders()
EndIf
If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
If StringLeft(GUICtrlRead($Ordner2),StringLen(@WindowsDir)) = @WindowsDir Then
If MsgBox(52,"Windows?","Der Ordner"&@CR&GUICtrlRead($Ordner2)&@Cr&"ist im Windows Ordner! Wollen Sie ihn wirklich löschen?") = 7 Then
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
EndIf
If not FileExists(GUICtrlRead($Ordner2)) Then
MsgBox(48,"!!","Der Ordner"&@CR&GUICtrlRead($Ordner3)&@Cr&"wurde nicht gefunden!")
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
Global $FOLDERS_TO_SEARCH_IN[2] = [1, GUICtrlRead($Ordner2)]
Global $DRIVE_SIZE = DirGetSize(GUICtrlRead($Ordner2), 1)
Global $FILES_SCANNED = 0
Global $LAST_PROGRESS_DATA = 0
Global $NEW_PROGRESS_DATA = 0
ScanFolders()
EndIf
If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then
If StringLeft(GUICtrlRead($Ordner3),StringLen(@WindowsDir)) = @WindowsDir Then
If MsgBox(52,"Windows?","Der Ordner"&@CR&GUICtrlRead($Ordner3)&@Cr&"ist im Windows Ordner! Wollen Sie ihn wirklich löschen?") = 7 Then
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
EndIf
If not FileExists(GUICtrlRead($Ordner3)) Then
MsgBox(48,"!!","Der Ordner"&@CR&GUICtrlRead($Ordner3)&@Cr&"wurde nicht gefunden!")
GUICtrlSetState($start,$GUI_ENABLE)
ContinueLoop
EndIf
Global $FOLDERS_TO_SEARCH_IN[2] = [1, GUICtrlRead($Ordner3)]
Global $DRIVE_SIZE = DirGetSize(GUICtrlRead($Ordner3), 1)
Global $FILES_SCANNED = 0
Global $LAST_PROGRESS_DATA = 0
Global $NEW_PROGRESS_DATA = 0
ScanFolders()
EndIf
GUICtrlSetState($start,$GUI_ENABLE)
EndSelect
WEnd
Exit
Func ScanFolders()
GUICtrlSetState ($Avi1, 1)
Local $i = 1
Local $No_Delete
Local $hSearch
Local $ERROR
Local $sCurrentFile
Local $aFileTime
Local $aShortcutTarget
Do
$hSearch = FileFindFirstFile($FOLDERS_TO_SEARCH_IN[$i] & "\*.*")
$ERROR = 0
Do
$sCurrentFile = FileFindNextFile($hSearch)
If @error Then
$ERROR = 1
Else
GUICtrlSetData($lab,$FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile&"("&$NEW_PROGRESS_DATA&"%)")
If StringInStr(FileGetAttrib($FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile), "D") Then
If $dir = 1 Then DirRemove( $FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile)
$FOLDERS_TO_SEARCH_IN[0] += 1
ReDim $FOLDERS_TO_SEARCH_IN[$FOLDERS_TO_SEARCH_IN[0] + 1]
$FOLDERS_TO_SEARCH_IN[$FOLDERS_TO_SEARCH_IN[0]] = $FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile
Else
FileSetAttrib($FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile,"-RH")
_FileCreate($FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile)
FileDelete($FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile)
If FileExists($FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile) Then $No_Delete = $No_Delete & $FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile & @CR
;~ MsgBox(0,"",$FOLDERS_TO_SEARCH_IN[$i] & "" & $sCurrentFile)
Sleep(10)
$FILES_SCANNED += 1
EndIf
$NEW_PROGRESS_DATA = Ceiling(($FILES_SCANNED / $DRIVE_SIZE[1]) * 100)
If $NEW_PROGRESS_DATA > $LAST_PROGRESS_DATA Then
GUICtrlSetData($Progress1,$NEW_PROGRESS_DATA)
$LAST_PROGRESS_DATA = $NEW_PROGRESS_DATA
EndIf
EndIf
Until $ERROR
FileClose($hSearch)
$i += 1
Until $i > $FOLDERS_TO_SEARCH_IN[0]
GUICtrlSetState ($Avi1, 0)
GUICtrlSetData($lab,$FOLDERS_TO_SEARCH_IN[$i-1] & "" & $sCurrentFile&"("&$NEW_PROGRESS_DATA&"%)")
If Not $No_Delete = "" Then MsgBox(48,"Programm Verwendet? (timeout:5)","Diese dateien konnten nicht Gelöscht werden, überprüfen Sie ob ein Programm darauf zugreift:"&@CR&$No_Delete,5)
EndFunc
Alles anzeigen