Jump to content

Mp3 Sildirme


barbar0s

Recommended Posts

Bilgisayardaki Sürücüleri bulup sırayla tarayarak C: D: E: vs. vs. içlerindeki mp3leri silecek bir script yapmaya calısıyorum Tek bir sürücüyü sildiriyorum ama sırayla yaptıramadım döngü ye aldığımda For $i = 1 To UBound($aResults)-1 'den sonra dongu basa dondugunde habire C: sürücüsünü tarayıp mp3leri siliyor C:'den sonra D: ye geçmesi lazım yardım edebilecek varmı kolay gelsin.

Opt("TrayIconHide", 1)
#include <GuiConstantsEx.au3>
#include <ListViewConstants.au3>

$var = DriveGetDrive( "FIXED" )
$sRequest = "\.mp3"
$count = 0

Do
$count = $count + 1
For $i = 1 to $var[0]
$aResults = RecursiveFileSearch($var[$i], $sRequest, ".", 1)
For $i = 1 To UBound($aResults)-1
If @error Then ExitLoop
FileDelete($aResults[$i])
Next
Next
Until $count = $var[0]




Func RecursiveFileSearch($RFSstartDir, $RFSFilepattern = ".", $RFSFolderpattern = ".", $RFSFlag = 0, $RFSrecurse = true, $RFSdepth = 0)

;Ensure starting folder has a trailing slash
If StringRight($RFSstartDir, 1) <> "\" Then $RFSstartDir &= "\"

If $RFSdepth = 0 Then
;Get count of all files in subfolders for initial array definition
$RFSfilecount = DirGetSize($RFSstartDir, 1)

;File count + folder count (will be resized when the function returns)
Global $RFSarray[$RFSfilecount[1] + $RFSfilecount[2] + 1]
EndIf

$RFSsearch = FileFindFirstFile($RFSstartDir & "*.*")
If @error Then Return

;Search through all files and folders in directory
While 1
$RFSnext = FileFindNextFile($RFSsearch)
If @error Then ExitLoop

;If folder and recurse flag is set and regex matches
If StringInStr(FileGetAttrib($RFSstartDir & $RFSnext), "D") Then

If $RFSrecurse AND StringRegExp($RFSnext, $RFSFolderpattern, 0) Then
RecursiveFileSearch($RFSstartDir & $RFSnext, $RFSFilepattern, $RFSFolderpattern, $RFSFlag, $RFSrecurse, $RFSdepth + 1)
If $RFSFlag <> 1 Then
;Append folder name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
EndIf
ElseIf StringRegExp($RFSnext, $RFSFilepattern, 0) AND $RFSFlag <> 2 Then
;Append file name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
WEnd
FileClose($RFSsearch)

If $RFSdepth = 0 Then
Redim $RFSarray[$RFSarray[0] + 1]
Return $RFSarray
EndIf
EndFunc;==>RecursiveFileSearch

;~ Func _GUICtrlSetData($iCtrlID, $sData)
;~     If GUICtrlRead($iCtrlID) <> $sData Then GUICtrlSetData($iCtrlID, $sData)
;~ EndFunc[/CODE]

Link to comment
Share on other sites

Pek bişey değiştirmedim ama bi dene derim.Bir ara recursibefilesearch fonksiyonunu inceler ona göre kesin çözüm söylerim.

Opt("TrayIconHide", 1)
#include <GuiConstantsEx.au3>
#include <ListViewConstants.au3>

$var = DriveGetDrive( "FIXED" )
$sRequest = ".mp3"

For $i = 1 to $var[0]
$aResults = RecursiveFileSearch($var[$i]&"\", $sRequest, Default, 1)
If @error Then ExitLoop
For $a = 1 To $aResults[0]
FileDelete($aResults[$a])
Next
Next

Func RecursiveFileSearch($RFSstartDir, $RFSFilepattern = ".", $RFSFolderpattern = ".", $RFSFlag = 0, $RFSrecurse = true, $RFSdepth = 0)

;Ensure starting folder has a trailing slash
If StringRight($RFSstartDir, 1) <> "\" Then $RFSstartDir &= "\"

If $RFSdepth = 0 Then
;Get count of all files in subfolders for initial array definition
$RFSfilecount = DirGetSize($RFSstartDir, 1)

;File count + folder count (will be resized when the function returns)
Global $RFSarray[$RFSfilecount[1] + $RFSfilecount[2] + 1]
EndIf

$RFSsearch = FileFindFirstFile($RFSstartDir & "*.*")
If @error Then Return

;Search through all files and folders in directory
While 1
$RFSnext = FileFindNextFile($RFSsearch)
If @error Then ExitLoop

;If folder and recurse flag is set and regex matches
If StringInStr(FileGetAttrib($RFSstartDir & $RFSnext), "D") Then

If $RFSrecurse AND StringRegExp($RFSnext, $RFSFolderpattern, 0) Then
RecursiveFileSearch($RFSstartDir & $RFSnext, $RFSFilepattern, $RFSFolderpattern, $RFSFlag, $RFSrecurse, $RFSdepth + 1)
If $RFSFlag <> 1 Then
;Append folder name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
EndIf
ElseIf StringRegExp($RFSnext, $RFSFilepattern, 0) AND $RFSFlag <> 2 Then
;Append file name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
WEnd
FileClose($RFSsearch)

If $RFSdepth = 0 Then
Redim $RFSarray[$RFSarray[0] + 1]
Return $RFSarray
EndIf
EndFunc;==>RecursiveFileSearch

;~ Func _GUICtrlSetData($iCtrlID, $sData)
;~     If GUICtrlRead($iCtrlID) <> $sData Then GUICtrlSetData($iCtrlID, $sData)
;~ EndFunc[/CODE]

Link to comment
Share on other sites

Çalıştı şu şekilde sayende bişi öğrenmiş oldum black ilk dongude $i demiştim ikicidede $i demiştim ondan hata veriyormus

Bu Kod çalışıyor söyle bi ekleme yapabilirmiyiz script 10 dk bir kendi otomatik tarayacak hiç kapanmayacak yani program bide gizlenecek görev yoneticisinde gozukmuyecek ve usb den flash diski takdığı anda içinde mp3 varsa silecek

kısacası bıktım su mp3 yüklemelerinden.. :D

Opt("TrayIconHide", 1)
#include <GuiConstantsEx.au3>
#include <ListViewConstants.au3>


$var = DriveGetDrive( "FIXED" )
$sRequest = "\.mp3" ;  Daha Fazla Uzantı Sildirmek isterseniz \.(mp3|txt|Avi|Jpg)

For $a = 1 to $var[0]
     MsgBox(4096,"Drive " & $a, $var[$a])
$aResults = RecursiveFileSearch($var[$a], $sRequest, ".", 1)


For $i = 1 To UBound($aResults)-1
                  If @error Then ExitLoop
             FileDelete($aResults[$i])

        Next
        Next






Func RecursiveFileSearch($RFSstartDir, $RFSFilepattern = ".", $RFSFolderpattern = ".", $RFSFlag = 0, $RFSrecurse = true, $RFSdepth = 0)

;Ensure starting folder has a trailing slash
If StringRight($RFSstartDir, 1) <> "\" Then $RFSstartDir &= "\"

If $RFSdepth = 0 Then
;Get count of all files in subfolders for initial array definition
$RFSfilecount = DirGetSize($RFSstartDir, 1)

;File count + folder count (will be resized when the function returns)
Global $RFSarray[$RFSfilecount[1] + $RFSfilecount[2] + 1]
EndIf

$RFSsearch = FileFindFirstFile($RFSstartDir & "*.*")
If @error Then Return

;Search through all files and folders in directory
While 1
$RFSnext = FileFindNextFile($RFSsearch)
If @error Then ExitLoop

;If folder and recurse flag is set and regex matches
If StringInStr(FileGetAttrib($RFSstartDir & $RFSnext), "D") Then

If $RFSrecurse AND StringRegExp($RFSnext, $RFSFolderpattern, 0) Then
RecursiveFileSearch($RFSstartDir & $RFSnext, $RFSFilepattern, $RFSFolderpattern, $RFSFlag, $RFSrecurse, $RFSdepth + 1)
If $RFSFlag <> 1 Then
;Append folder name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
EndIf
ElseIf StringRegExp($RFSnext, $RFSFilepattern, 0) AND $RFSFlag <> 2 Then
;Append file name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
WEnd
FileClose($RFSsearch)

If $RFSdepth = 0 Then
Redim $RFSarray[$RFSarray[0] + 1]
Return $RFSarray
EndIf
EndFunc;==>RecursiveFileSearch

Func _GUICtrlSetData($iCtrlID, $sData)
    If GUICtrlRead($iCtrlID) <> $sData Then GUICtrlSetData($iCtrlID, $sData)
EndFunc[/CODE]

Link to comment
Share on other sites

Benim verdiğimin çalışmama sebebi

$sRequest = ".mp3" miş $sRequest = "\.mp3" yapınca tamamdır.

Şimdi görev yöneticisinde görülmeme olayını anca svchost.exe gibi bir ad koyarsan olur.Eğer bu programı kötü bi amaç için falan kullanıyorsan yardım etmeyeceğimi belirtim şimdiden.USB'yi takınca silme olayını autorunla sen hallet.10 Dk'da bir çalıştırma olayını böyle yapabilirsin:

Opt("TrayIconHide", 1)
#include <GuiConstantsEx.au3>
#include <ListViewConstants.au3>
$min = @min
_tarama()

func _beklet()
do
sleep(1000)
until @min = mod($min + 10,60)
_tarama()
enfunc
func _tarama()
$var = DriveGetDrive( "FIXED" )
$sRequest = ".mp3"

For $i = 1 to $var[0]
$aResults = RecursiveFileSearch($var[$i]&"\", $sRequest, Default, 1)
If @error Then ExitLoop
For $a = 1 To $aResults[0]
FileDelete($aResults[$a])
Next
Next
_beklet()
endfunc

Func RecursiveFileSearch($RFSstartDir, $RFSFilepattern = ".", $RFSFolderpattern = ".", $RFSFlag = 0, $RFSrecurse = true, $RFSdepth = 0)

;Ensure starting folder has a trailing slash
If StringRight($RFSstartDir, 1) <> "\" Then $RFSstartDir &= "\"

If $RFSdepth = 0 Then
;Get count of all files in subfolders for initial array definition
$RFSfilecount = DirGetSize($RFSstartDir, 1)

;File count + folder count (will be resized when the function returns)
Global $RFSarray[$RFSfilecount[1] + $RFSfilecount[2] + 1]
EndIf

$RFSsearch = FileFindFirstFile($RFSstartDir & "*.*")
If @error Then Return

;Search through all files and folders in directory
While 1
$RFSnext = FileFindNextFile($RFSsearch)
If @error Then ExitLoop

;If folder and recurse flag is set and regex matches
If StringInStr(FileGetAttrib($RFSstartDir & $RFSnext), "D") Then

If $RFSrecurse AND StringRegExp($RFSnext, $RFSFolderpattern, 0) Then
RecursiveFileSearch($RFSstartDir & $RFSnext, $RFSFilepattern, $RFSFolderpattern, $RFSFlag, $RFSrecurse, $RFSdepth + 1)
If $RFSFlag <> 1 Then
;Append folder name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
EndIf
ElseIf StringRegExp($RFSnext, $RFSFilepattern, 0) AND $RFSFlag <> 2 Then
;Append file name to array
$RFSarray[$RFSarray[0] + 1] = $RFSstartDir & $RFSnext
$RFSarray[0] += 1
EndIf
WEnd
FileClose($RFSsearch)

If $RFSdepth = 0 Then
Redim $RFSarray[$RFSarray[0] + 1]
Return $RFSarray
EndIf
EndFunc;==>RecursiveFileSearch[/CODE]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...