Autoit - Dosya değişiklik kontrolü

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Autoit - Dosya değişiklik kontrolü

Mesaj gönderen anxious »

@Bluelife rica etsem bu konuyada bakabilirmisin.
Bir txt dosyasında değişiklik olduğunda bunu $Edit1'e yazıyor buraya kadar sorun yok.
Ama daha fazla eklendiğinde ve birçok txt dosyasını nasıl kontrol edebilirim?
yani $DosTakipEdilenKlasor = @DesktopDir & "\TXT Dosyaların Değiştiği Klasör"
"TXT Dosyaların Değiştiği Klasör" içindeki bütün txt dosyaların değişikliğini takip etmek istiyorum.

Tek bir txt için çalışan script bu bunda herhangi bir problem yok.

Kod: Tümünü seç

#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $DosTakipEdilenKlasor = @DesktopDir & "\TXT Dosyaların Değiştiği Klasör"
Global $sFileToCheck = $DosTakipEdilenKlasor & "\file.txt"
Global $bFileChanged = False
Global $sFileDateTime = _ArrayToString(FileGetTime($sFileToCheck))
AdlibRegister("_DosyaKontrol", 250)
$Form1 = GUICreate("Form1", 493, 263)
$Edit1 = GUICtrlCreateEdit("", 16, 24, 457, 193)
$ButtonHakkinda = GUICtrlCreateButton("Hakkinda?", 392, 232, 75, 25)
GUISetState(@SW_SHOW, $Form1)
While 1
	If $bFileChanged Then
		GUICtrlSetData($Edit1, @MIN & " : " & @SEC & " Dosya değişti! " & $sFileToCheck & @CRLF, 1)
		$sFileDateTime = _ArrayToString(FileGetTime($sFileToCheck))
		$bFileChanged = False
	EndIf
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButtonHakkinda
			MsgBox(0,"Hakkında","https://forum.sordum.net")
	EndSwitch
WEnd

Func _DosyaKontrol()
	If $sFileDateTime <> _ArrayToString(FileGetTime($sFileToCheck)) Then $bFileChanged = True
EndFunc   ;==>_DosyaKontrol

Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 269
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 14 kez
Teşekkür edildi: 24 kez

Re: Autoit - Dosya değişiklik kontrolü

Mesaj gönderen BlueLife »

@anxious

Ilk önce hedef klasördeki txt dosyalarının listesini ve değiştirme zaman bilgisini bir arrayda listeletebilirsin. Sonra aralıklarla ilgili listedeki txt dosyarının zaman bilgilerini kontrol edip karşılaştırma yapabilirsin. Değişiklik varsa bunu yazdırırsın. Örneğini değişitirdim, incelersin.
Kolay gelsin...

Kod: Tümünü seç

#include <Array.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $DosTakipEdilenKlasor = @ScriptDir & "\TXT_FILES\"
Global $FileList = _Txt_File_List_And_Time($DosTakipEdilenKlasor)
;~ _ArrayDisplay($FileList)
Global $Form1 = GUICreate("Form1", 493, 263)
Global $Edit1 = GUICtrlCreateEdit("", 16, 24, 457, 193)
Global $ButtonHakkinda = GUICtrlCreateButton("Hakkinda?", 392, 232, 75, 25)
GUISetState(@SW_SHOW, $Form1)

AdlibRegister("_DosyaKontrol", 250)
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButtonHakkinda
			MsgBox(0,"Hakkında","https://forum.sordum.net")
	EndSwitch
WEnd

Func _DosyaKontrol()
	Local $fTime
	For $I = 1 to $FileList[0][0]
		$fTime = FileGetTime($FileList[$I][0],0,1)
		If $FileList[$I][1] <> $fTime Then
			$FileList[$I][1] = $fTime
			GUICtrlSetData($Edit1, $fTime & "-> Changed  -> " & $FileList[$I][0] & @CRLF, 1)
		EndIf
	Next
EndFunc   ;==>_DosyaKontrol

Func _Txt_File_List_And_Time($tPath)
	Local $Return_Array[1][2] = [[0,1]] ;FileName, FileTime
	Local $FileSearch = FileFindFirstFile($tPath & "*.txt"),$FileFind
	If $FileSearch <> -1 Then
		While 1
			$FileFind = FileFindNextFile($FileSearch)
			If @error Then ExitLoop
			If @extended <> 0 Then ContinueLoop ;0 = file, 1 = Folder

			$Return_Array[0][0] += 1
			If $Return_Array[0][0] >= $Return_Array[0][1] Then
				$Return_Array[0][1] += 50
				Redim $Return_Array[$Return_Array[0][1]][2]
			EndIf
			$Return_Array[$Return_Array[0][0]][0] = $tPath & $FileFind
			$Return_Array[$Return_Array[0][0]][1] = FileGetTime($tPath & $FileFind,0,1)
		Wend
	EndIf
	Return $Return_Array
EndFunc
anxious
Byte3
Byte3
Mesajlar: 114
Kayıt: 11 Mar 2015, 07:56
Teşekkür edildi: 1 kez

Re: Autoit - Dosya değişiklik kontrolü

Mesaj gönderen anxious »

Teşekkürler @BlueLife elinize sağlık.
Cevapla