Hey zusammen,
es gibt ja die Funktion "exit", die das Programm beendet. Gibt es auch eine Funktion, die das Programm erneut von vorne beginnen lässt?
Hey zusammen,
es gibt ja die Funktion "exit", die das Programm beendet. Gibt es auch eine Funktion, die das Programm erneut von vorne beginnen lässt?
Hallo,
dafür gibt es in AutoIt keine Funktion. Aber je nachdem was dein Script macht, kannst du deinen Code in ein While True ... Wend packen oder du nutzt die Restart-UDF.
Ja - oder DU packst alles in eine große Funktion - die Du dann immer wieder aufrufst. (anstelle Exit.
Gruß
Peter
die Du dann immer wieder aufrufst
wozu er dann wieder eine Endlosschleife benötigt, wenn es nicht in einer Endlosrekursion enden soll, welche immer ein Stack Overflow zur folge hat.
ShellExecute(@ScriptFullPath)
Exit
Vielleicht geht es auch darum, das Skript bzw. die Exe zu updaten. Dafür benutzt man in der Regel einen externen Starter.
Vielleicht geht es auch darum, das Skript bzw. die Exe zu updaten. Dafür benutzt man in der Regel einen externen Starter.
ja würde ich alles in einer .exe einbauen quasi _
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Local $fsFile_IfUpdateHappens = @ScriptDir & "\Updater.exe"
if $cmdline[0] <> 0 Then
For $iCmdLine = 1 To $cmdline[0]
Switch $cmdline[$iCmdLine]
Case "-update" ;correct Parameter Syntax could be: -update C:\TheUpdate.exe C:\FileToUpdate.exe
if $cmdline[0] = $iCmdLine Then ;if there is no other element after the current "-update" parameter
ConsoleWrite("Error Missing Update File......" & @CRLF) ; or msgbox or log to file
Exit
ElseIf ($cmdline[0]-$iCmdLine) < 2 Then
ConsoleWrite("Error Missing File To Update......" & @CRLF)
Exit
EndIf
$sTheUpdate = $cmdline[$iCmdLine+1]
;filesetattrib if needed
FileCopy($sTheUpdate, $cmdline[$iCmdLine+2], 1+8) ;overwrite
ShellExecute($cmdline[$iCmdLine+2])
_ExitAndSelfDelete() ;no need to exist longer
EndSwitch
Next
EndIf
;================== TEST CODE BELOW/
Local $faTest = @ScriptDir & "\aUpdateStartFile.txt", $fTheUpdate = @ScriptDir & "\Update.exe"
While Sleep(50) ;alpines rat
if FileExists($faTest) Then
FileCopy(@ScriptFullPath, $fsFile_IfUpdateHappens, 1+8)
FileDelete($faTest)
if FileExists($fTheUpdate) = 0 Then
MsgBox(16, "Error", "Missing the Update file.")
Exit
EndIf
ShellExecute($fsFile_IfUpdateHappens, '-update "' & $fTheUpdate & '" "' & @ScriptFullPath & '"', @ScriptDir, "open", @SW_SHOW)
Exit
EndIf
WEnd
;================== TEST CODE ENDE\
Func _ExitAndSelfDelete()
ShellExecute(@ComSpec, ' /C ping localhost -n 2 & del "' & @ScriptFullPath & '"', @TempDir, "open", @SW_HIDE)
Exit
EndFunc
Alles anzeigen
Gibt echt einige herangehensweisen hier, diese hier habe ich vor einiger zeit mal verwendet und jetzt fix nachgeschrieben.