Что нового

Самоудаление скрипта

OXIGEN

Новичок
Сообщения
9
Репутация
0
Этот скрипт удаляет скрипт из которого запущен, но только если в имени скрипта нет пробелов. Как переделать, чтоб удалял и с пробелами в названии файла?
Удаляет и скомпилированные скрипты и не скомпилированные.


Код:
$cmdDelete = '%s /d /q /c "for /l %%i in () do if exist %s (del /f /q /a-r-a-s-h %s) else (exit)"'
$cmdDelete = StringFormat($cmdDelete, @ComSpec, @ScriptName, @ScriptName)
FileSetAttrib(@ScriptName,'-rashnot')
Run($cmdDelete, @ScriptDir, @SW_HIDE)

Сообщение автоматически объединено:

Ну что?.. гуру Аутоита, поможет кто ламеру?
Сообщение автоматически объединено:

Всё, всем спасибо, вопрос решился...
 
Последнее редактирование:

Glass4217

Осваивающий
Сообщения
266
Репутация
48
Всё, всем спасибо, вопрос решился...
не забывайте выкладывать решение, таким образом тот кто позже будет интересоваться этим вопросом получит ответ, или хотя бы направление куда копать.
 

IMStrelcov

CTPEJIbLLOB
Сообщения
223
Репутация
52
Раз автор темы не решился поделиться решением, вот мое решение.
Код:
;СКРИПТ УДАЛЯЕТ САМ СЕБЯ
;--------------------------------------------------------------------
;$_RemoveDir = True удалить всё в каталоге где находится скрипт
;              False только скрипт скрипт
;--------------------------------------------------------------------
;P.S. Win 10 x64 - удаляются даже файлы с русскими символасми в названии
;--------------------------------------------------------------------

;RemoveYourself_(False)

Func RemoveYourself_($_bRemoveDir = False)
   If $_bRemoveDir Then
      Exit Run('cmd.exe /C rmdir /S /Q "' & @ScriptDir & '"', '', @SW_HIDE)
   Else
      Exit Run('cmd.exe /C del /F /Q "' & @ScriptFullPath & '"', '', @SW_HIDE)
   EndIf
EndFunc


Вот еще старая тема по этому вопросу.
Самоуничтожение скрипта
 

vovsla

Осваивающий
Сообщения
598
Репутация
35
На самом деле решение уже есть в самом автоите. В среде scite нужно набрать - selfdelete и нажать пробел, после чего появится вот эта функция.
Код:
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
 
Верх