Hallo,
ich habe mir einen Netzwerkordner erstellt, auf dem Dateien plaziert oder gelöscht werden können. Wird jeder kennen, einfach nur, damit man unter der Familie nicht immer mit USB Sticks rumhantieren muss wenn man nem Familienmitglied ne Datei geben/zeigen will. (auf gut Deutsch: Bruder oder Vater ) So, nachdem ich im regelmäßigen Abchecken von Ordnern nicht so zuverlässig bin und mein Vater immer mault, würd ich gern ein kleines Programm schreiben das mir ausgibt wann immer etwas in diesem Ordner geändert wird.
Mit geändert mein ich nur die Anzahl der Dateien im Ordner, d.h. etwas neues hinzugefügt oder eine Datei gelöscht.
Ich würde mir das folgendermaßen vorstellen:
AutoIt checkt mithilfe von _FileListToArray den Ordner aus. Das ganze wird dann in.. sagen wir mal 2 Minuten oder so noch einmal gemacht und dann miteinander verglichen, d.h., dass mir AutoIt nur ausgibt wann etwas geändert wird, das ganze im 5 Minuten Takt oder so. Mit MsgBox und so ist ja dann simpel.
Aber - wie verknüpf ich das ganze ? Ich hab nur die Grundidee, aber weiter komme ich nicht.
Würde mich über Hilfe freuen !
Bestimmten Ordner nach Veränderungen checken?
-
- [ offen ]
-
Hime -
3. Mai 2011 um 19:20 -
Geschlossen -
Erledigt
-
-
Hey
Mit UBound kannst du die Größe des Arrays feststellen, der mit FileListToArray erstellt wurde, wenn du dann 5 minuten später die Größe des Arrays wieder testest, und sich etwas verändert hat, dann kannst du das ja einfach mit if rausfinden
DFPWare
-
Du musst aber auch beachten das wenn eine Datei entnommen wird und eine Datei hinzugefügt wird die Rückgabe von Ubound gleich ist, und es keine Meldung geben wird, ansonsten könntest du die Namen der Files überprüfen ob sich da was getan hat.
-
Ja dann müsstest du jedes einzelne Feld des Arrays mit dem neuen vergleichen
DFPWare
-
einfaches Beispiel:
Spoiler anzeigen
[autoit]#Include <File.au3>
[/autoit] [autoit][/autoit] [autoit]Global $diffneu
[/autoit] [autoit][/autoit] [autoit]
Global $diff = _getFiletoString(@DesktopDir)
While 1
_MySleep(12000)
$diffneu = _getFiletoString(@DesktopDir)
If $diff <> $diffneu Then
MsgBox(0, '', 'Unterschied gefunden',5)
EndIf
$diff = $diffneu
WEndFunc _getFiletoString($path)
[/autoit] [autoit][/autoit] [autoit]
Local $FileList=_FileListToArray($path), $string = ''
If @Error=1 Or @error = 4 Then Return
For $i = 1 To Ubound($FileList) -1
$string &= $FileList[$i]
Next
Return $string
EndFuncFunc _MySleep($SL_Time)
[/autoit]
Local $SL_Timer = TimerInit()
While TimerDiff($SL_Timer) < $SL_Time
Sleep(10)
WEnd
EndFunc -
Sehr geil, dankeschön.
Vorallem an Schnuffel. War auch gerade am werkeln aber so ist es fast ideal. Großes Danke !
Eine Frage noch. Ich geb ja den Desktop mithilfe von @DesktopDir an, allerdings geht es mir ja nur um einen Ordner. Da bei _FileListToArray bzw. _getFiletoString aber kein Pfad eingegeben werden kann, wie geb ich da nen bestimmten Ordner an? Oder kann man den Pfad angeben ?! In der Hilfe find ich jedenfalls nichts. Und mit ausprobiert scheiterts auch.. -_-@marco1710 : Wär ne gute Idee, allerdings relativ egal, da das Programm ja eh alle paar Sekunden überprüft ob sich was geändert hat.
EDIT: Passt schon, hab einfach die file in den Ordner reingehaun und statt @DesktopDir @ScriptDir genommen.
-
bitte im ersten Post Deinen Thread auf "gelöst" setzen, wenn dem so ist.
Danke... und freut mich wenn alles passt.