1. sayfa (Toplam 1 sayfa)
Autoit StringRegExpReplace Hakkında? - Çözüldü
Gönderilme zamanı: 23 Kas 2017, 06:24
gönderen anxious
Arkadaşlar hem dosya hem klasörlerin isimlerinde istemediğimiz karakterleri nasıl silebiliriz alt klasörlerde dahil olacak şekilde
Klasörlerden youtube kelimesini
Dosyalardan da youtube kelimesini silmek istiyorum
Kod: Tümünü seç
$Kaynak = @ScriptDir
$RegExpReplace = StringRegExpReplace($Kaynak, "youtube", "")
if eğer dosyalar ise Then
FileMove($kaynak,$RegExpReplace)
else klasörler ise
DirMove($kaynak,$RegExpReplace)
EndIf
Re: Autoit StringRegExpReplace Hakkında?
Gönderilme zamanı: 23 Kas 2017, 20:30
gönderen BlueLife
@anxious
Önce klasör içeriğinin listesini alırsın. Sonra listede ilgili kelimeyi aratarak replace yapabilirsin. Bir örnek hazırladım kendine göre düzenlersin.
Bu arada replace yapılacak dosya isminde benzer dosya varsa veyahut ilgili dosya klasör bir işlem tarafından kullanılıyorsa yeniden adlandırma işlemi başarısız olacaktır.
Kod: Tümünü seç
#include <Array.au3>
Local $TargetFolder = "C:\Test\"
Local $FileList
;Dosya ve klasör listesini alalım
_Bl_FileList($TargetFolder,$FileList)
_ArrayDisplay($FileList) ;Listeyi görüntülemek için
Local $ReplaceStr
If IsArray($FileList) <> 0 Then
;Geriden itibaren kontrol edelim
For $I = $FileList[0][0] to 1 step -1
$ReplaceStr = StringReplace($FileList[$I][1],"youtube",'')
If $ReplaceStr <> $FileList[$I][1] And Stringlen($ReplaceStr) > 0 Then
;MsgBox(64,"",$FileList[$I][0] & $FileList[$I][1] & @crlf & @crlf & $FileList[$I][0] & $ReplaceStr)
If $FileList[$I][2] = 0 Then ;Dosya
FileMove($FileList[$I][0] & $FileList[$I][1],$FileList[$I][0] & $ReplaceStr)
Else ;Klasör
DirMove($FileList[$I][0] & $FileList[$I][1],$FileList[$I][0] & $ReplaceStr)
EndIf
EndIf
Next
EndIf
Func _Bl_FileList($sFolder, ByRef $Bl_FileList)
If StringRight($sFolder, 1) <> "\" Then $sFolder &= "\"
Local $Error, $extended, $Found_File
Local $BL_Search = FileFindFirstFile($sFolder & "*")
If $BL_Search <> -1 Then
While 1
$Found_File = FileFindNextFile($BL_Search)
$Error = @error
$extended = @extended
If $Error Then ExitLoop
If IsArray($Bl_FileList) = 0 Then Dim $Bl_FileList[100][3] = [[0,100]]
$Bl_FileList[0][0] += 1
If $Bl_FileList[0][0] >= $Bl_FileList[0][1] Then
$Bl_FileList[0][1] += 100
ReDim $Bl_FileList[$Bl_FileList[0][1]][3]
EndIf
$Bl_FileList[$Bl_FileList[0][0]][0] = $sFolder
$Bl_FileList[$Bl_FileList[0][0]][1] = $Found_File
$Bl_FileList[$Bl_FileList[0][0]][2] = $extended ; 0 = File, 1 = Folder
If $extended = 1 Then ;Folder
_Bl_FileList($sFolder & $Found_File, $Bl_FileList)
EndIf
WEnd
EndIf
FileClose($BL_Search)
EndFunc ;==>_Get_Exe_From_Folder
Re: Autoit StringRegExpReplace Hakkında?
Gönderilme zamanı: 23 Kas 2017, 23:58
gönderen anxious
Vaybe bukadar detaylı olacağı hiç aklıma gelmemişti gerçekten teşekkür ederim
Bir kaç soru sorabilirmiyim
Şu satır : If StringRight($sFolder, 1) <> "\" Then $sFolder &= "\"
ve şu satırların tam olarak anlamı nedir
If IsArray($Bl_FileList) = 0 Then Dim Buradaki --> [100][3] ve [[0,100]] --> $Bl_FileList[100][3] = [[0,100]]
Birde siz dizileri çekerken $FileList[$I][0] değişkenin yanıda birtane daha [0] sıfır ekliyorsunuz mesela burada birden fazla kullanmışsınız $Bl_FileList[$Bl_FileList[0][0]][0] = $sFolder
Re: Autoit StringRegExpReplace Hakkında?
Gönderilme zamanı: 24 Kas 2017, 11:28
gönderen BlueLife
@anxious
If StringRight($sFolder, 1) <> "\" Then $sFolder &= "\"
Klasörün sonunda \ karakteri yoksa ekle anlamını taşıyor. Misal @ScriptDir ile alınan klasör konumunda bazen \ olabilir bazen olmayabilir. Buda kodlanan programda bazen hata çıkmasına neden olur.
If IsArray($Bl_FileList) = 0 Then Dim $Bl_FileList[100][3] = [[0,100]]
Değişken array degilse tanıtma manasında. Bir sırada birden fazla veri almak için Bu tip tanıtma yapılıyor. = den sonra ise tanıtma yaparken bazı tanımlamalar yapmak için. Biraz kurcalarsan anlarsın.
$Bl_FileList[$Bl_FileList[0][0]][0] = $sFolder
$Bl_FileList[0][0] deki rakamı yansıtıyoruz. Misal $Bl_FileList[0][0] değeri 1 ise yukarıdaki satırın analamı $Bl_FileList[1][0] = $sFolder şeklinde olacaktır.
Karışık görünse de aslında karışık değil. Tabi biraz kurcalamak üzerinde çalışıp anlamak lazım.
Kolay gelsin...