Что нового

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

OXIGEN

Новичок
Сообщения
3
Репутация
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

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

IMStrelcov

CTPEJIbLLOB
Сообщения
181
Репутация
34
Раз автор темы не решился поделиться решением, вот мое решение.
Код:
;СКРИПТ УДАЛЯЕТ САМ СЕБЯ
;--------------------------------------------------------------------
;$_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

Осваивающий
Сообщения
558
Репутация
26
На самом деле решение уже есть в самом автоите. В среде 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
 
Верх