Что нового

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

OXIGEN

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

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

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

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

All2khoff

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

IMStrelcov

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

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