Ich möchte, dass meine Exe "Test.exe", die die Exe "TestTmp.exe" downloaded, die "TestTmp.exe" in "Test.exe", also in ihren eigenen Namen umbenennt, nachdem sie sich selbst gelöscht hat.
Bis jetzt mache ich es wie folgt.
Spoiler anzeigen
Func _SelfDelete($iDelay = 0)
Local $sCmdFile
FileDelete(@TempDir & "scratch.bat")
$sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & 'scratch.bat'
FileWrite(@TempDir & "scratch.bat", $sCmdFile)
Run(@TempDir & "scratch.bat", @TempDir, @SW_HIDE)
EndFunc
Func _SelfRename($iDelay = 0)
Local $sCmdFile
FileDelete(@TempDir & "scratch2.bat")
$sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
& ':loop' & @CRLF _
& 'ren '&@ScriptDir&'\TestTmp.exe '&@ScriptDir&'\Test.exe' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & 'scratch2.bat'
FileWrite(@TempDir & "scratch2.bat", $sCmdFile)
Run(@TempDir & "scratch2.bat", @TempDir, @SW_HIDE)
EndFunc
Sobald der Download fertig ist:
Spoiler anzeigen
_SelfDelete(500)
_SelfRename(1000)
Exit
Zunächst wird festgelegt, dass die Datei sich nach 0,5s selbst löschen soll.
Danach wird festgelegt, dass die Batch-Datei nach 1s die Tmp-Datei in die Normale umbennent.
Dann wird das Programm beendet.
Das selbst löschen klappt, aber das umbenennen nicht.
Ich glaube, dass es an der _SelfRename Funktion liegt.
Kann mir einer mit Batch Kentnissen helfen?