Автор Тема: Самоуничтожение скрипта  (Прочитано 21922 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн _dron_ [?]

  • Новичок
  • *
  • Сообщений: 84
  • Репутация: 8
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.10.2
Re: Самоуничтожение скрипта
« Ответ #15, Отправлен: Май 30, 2014, 04:56:34 »
Цитировать
мне тут поржать? или похихикать?

OffTopicНе знаю как хочешь! ;D

Русское сообщество AutoIt

Re: Самоуничтожение скрипта
« Ответ #15 Отправлен: Май 30, 2014, 04:56:34 »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1425
  • Репутация: 210
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Самоуничтожение скрипта
« Ответ #16, Отправлен: Май 14, 2016, 01:11:47 »
Наверно с точки зрения оптимизации скрипта лучше написать так:
(нажмите для показа/скрытия)

А вообще я бы сделал вот так:
(нажмите для показа/скрытия)



Вот так и без временных файлов  ;D и без дополнительных файлов включения. Минимум телодвижений  ;D...

Не знаю что там понаписал _dron_, но вот так-то точно работает:
Код: AutoIt [Выделить]
OnAutoItExitRegister('_RemoveYourself')
; ...
MsgBox(0, '', 'Wait...')
; ...
Func _RemoveYourself() ; Функция сработает, только если данный скрипт скомпилирован
    If @Compiled Then
        Local $sPath = FileGetShortName(@ScriptFullPath)
        Run(@ComSpec & ' /c For /L %i In (0,1,200) Do (del ' & $sPath & '&&timeout /t 0&&if not exist ' & $sPath & ' exit)', '', @SW_HIDE)
    EndIf
EndFunc   ;==>_RemoveYourself


В "CMD.exe" передается цикл "For..." со счетчиком, он будет повторен 200 раз, если самоудаления не произойдет раньше. Это своеобразный ограничитель работы цикла по времени (примерно полминуты) и соответственно самой "CMD.exe".
Если "ограничиваться" - это не ваш стиль, тогда:
(нажмите для показа/скрытия)

Также в цикле присутствуетtimeout /t 0Что на нашем языке означает:
Код: AutoIt [Выделить]
Sleep(10) ; примерно

« Последнее редактирование: Июнь 13, 2018, 19:36:12 от Alofa »

Оффлайн Skif_off [?]

  • Новичок
  • *
  • Сообщений: 173
  • Репутация: 12
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Самоуничтожение скрипта
« Ответ #17, Отправлен: Май 19, 2016, 13:07:06 »
Правильно понимаю, что функция не сработает правильно, если создание коротких имён 8.3 отключено?

Оффлайн СН3СН2ОН [?]

  • Новичок
  • *
  • Сообщений: 78
  • Репутация: 11
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.2.8.1
Re: Самоуничтожение скрипта
« Ответ #18, Отправлен: Май 19, 2016, 23:47:08 »
Правильно понимаю, что функция не сработает правильно, если создание коротких имён 8.3 отключено?

делаем так и все, почти идеально
Код: AutoIt [Выделить]
Local $sPath = '"'&@ScriptFullPath&'"'


(нажмите для показа/скрытия)

Япрофиэтосерьезно

Русское сообщество AutoIt

Re: Самоуничтожение скрипта
« Ответ #18 Отправлен: Май 19, 2016, 23:47:08 »

Оффлайн IMStrelcov [?]

  • Новичок
  • *
  • Сообщений: 30
  • Репутация: 1
  • Пол: Мужской
  • CTPEJIbLLOB
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Самоуничтожение скрипта
« Ответ #19, Отправлен: Июнь 13, 2018, 14:52:57 »
Наткнулся на эту тему поздновато, но мало ли кому еще пригодится, вот мой вариант откопал с полки
Код: AutoIt [Выделить]
;СКРИПТ УДАЛЯЕТ САМ СЕБЯ
;-----------------------
;$_RemoveDir = если True то удалить весь каталог где находится скрипт
;--------------------------------------------------------------------
Func RemoveYourself_($_RemoveDir = False)
   If $_RemoveDir 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


Русское сообщество AutoIt

Re: Самоуничтожение скрипта
« Ответ #19 Отправлен: Июнь 13, 2018, 14:52:57 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
58 Ответов
33851 Просмотров
Последний ответ Февраль 11, 2011, 18:18:52
от `p r o x y
7 Ответов
7854 Просмотров
Последний ответ Октябрь 15, 2009, 21:34:57
от Minek
3 Ответов
9223 Просмотров
Последний ответ Октябрь 21, 2009, 03:07:51
от CreatoR
2 Ответов
4746 Просмотров
Последний ответ Май 26, 2012, 08:16:35
от SemEMP
1 Ответов
3822 Просмотров
Последний ответ Ноябрь 27, 2009, 02:10:48
от timsky
8 Ответов
8401 Просмотров
Последний ответ Декабрь 01, 2009, 10:07:36
от Suppir
8 Ответов
12979 Просмотров
Последний ответ Декабрь 15, 2009, 16:20:14
от Guezt Gutsy
12 Ответов
5822 Просмотров
Последний ответ Апрель 03, 2010, 19:03:53
от gregaz
1 Ответов
6996 Просмотров
Последний ответ Июль 30, 2010, 15:57:32
от asdf8
1 Ответов
3236 Просмотров
Последний ответ Январь 15, 2011, 04:29:34
от CreatoR