Autoit - Dosya değişiklik kontrolü

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
anxious
Byte2
Byte2
Mesajlar: 74
Kayıt: 11 Mar 2015, 07:56

Autoit - Dosya değişiklik kontrolü

Mesaj gönderen anxious » 17 Kas 2018, 14:26

@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
Byte4
Byte4
Mesajlar: 162
Kayıt: 29 Ağu 2014, 20:42

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

Mesaj gönderen BlueLife » 18 Kas 2018, 10:57

@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
Byte2
Byte2
Mesajlar: 74
Kayıt: 11 Mar 2015, 07:56

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

Mesaj gönderen anxious » 23 Kas 2018, 15:49

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

Cevapla