Ja moin,
ich habe ein Script geschrieben das ein Verzeichnis überwacht. Wenn dort eine neue Präsentation reinkommt, wird die aktuelle Präsentation (die gerade läuft) gestoppt und die neue Präsentaion in das Verzeichnis RUN verschoben und gestartet.
Nun mein Problem. Das kopieren der neuen Präsentation auf den Rechner dauert bei uns schon mal 5-10 Minuten.
Wie bring ich AutoIt denn bei das er warten soll bis die Datei ganz kopiert wurde. Ich habs mit sleep versucht, ist aber die schlechteste Lösung.
Momentan fängt er dann irgendwann an, kann die Datei nicht verschieben und hängt sich auf.
Gruß
Sebastian
C
#include <File.au3>
#include <array.au3>
HotKeySet("{Esc}", "_CloseIt") ;mit ESC kann Skript verlassen werden
Opt("GuiOnEventMode", 1)
Global $aFiles, $sPath = "C:\Praesentationen\"
;Global $aApplication = "POWERPNT.EXE"
Global $aApplication = "PPTVIEW.EXE"
Global $rStart = "Ja"
AdlibRegister("_searchFiles", 30000) ;alle 60000 ms _searchFiles aufrufen eventuell anpassen
While 1
Sleep(30000)
MouseMove(-1000, 1200)
MouseMove(-999, 1199)
sleep(1000)
WEnd
Func _searchFiles()
AdlibUnRegister("_searchFiles") ;_searchFiles deregistrieren
$aFiles = _FileListToArray($sPath, "*", 1) ;alle File im Pfad in ein Array einlesen
If IsArray($aFiles) Then ;wenn Array
For $i = 1 To $aFiles[0] ;Schleifenbegin für alle Files im Array
ConsoleWrite($sPath & $aFiles[$i] & @CRLF);Consoleasgabe des Filenamens (kann auskommentiert werden)
$aFileSize = FileGetSize($sPath & $aFiles[$i])
;ConsoleWrite($aFileSize)
Sleep(10000)
$bFileSize = FileGetSize($sPath & $aFiles[$i])
Sleep(120000)
MouseMove(-1000, 1200)
MouseMove(-999, 1199)
Sleep(120000)
MouseMove(-1000, 1200)
MouseMove(-999, 1199)
Sleep(120000)
MouseMove(-1000, 1200)
MouseMove(-999, 1199)
If $aFileSize = $bFileSize Then
ConsoleWrite("Programm stoppen")
sleep(360000)
Run(@ComSpec & " /c " & 'c:\WINDOWS\system32\taskkill.exe /F /IM ' & $aApplication, "", @SW_HIDE)
FileDelete($sPath & "RUN\*.ppt")
;ConsoleWrite("Programm löschen" & $sPath & "RUN\")
FileMove($sPath & $aFiles[1], $sPath &"RUN\"& $aFiles[1])
sleep(10000)
;ConsoleWrite($sPath & $aFiles[1] &"--"& $sPath &"\RUN\"& $aFiles[1])
ShellExecute($sPath &"RUN\"& $aFiles[$i])
;ConsoleWrite("Programm starten")
sleep(6000)
EndIf
;FileDelete($sPath & "\" & $aFiles[$i]) ;<============= mit echter Aktion ersetzen
Next
;Sleep(1000)
ElseIf $rStart = "Ja" Then
$rFiles = _FileListToArray($sPath & "RUN\", "*", 1)
If IsArray($rFiles) Then
ShellExecute($sPath &"RUN\"& $rFiles[1])
$rStart = "Nein"
EndIf
EndIf
AdlibRegister("_searchFiles", 1000) ;_searchFiles wieder registrieren
EndFunc ;==>_searchFiles
Func _CloseIt()
Exit
EndFunc
Alles anzeigen