Что нового

[Автоматизация] (?)- AutoIT Удаление файла через заданное время

NCsoft

Новичок
Сообщения
24
Репутация
0
Доброго времени суток !
Имееться меню , в нём есть кнопка , эта кнопка выполняет функцию "Создать файл с разширением *.cmd после чего поместить в этот файл данный код" , после окончания сценария по созданию файла с помещением туда заданного кода он запускаеться , после запуска он удаляеться .

- Проблема в том что покаместь программа *.cmd не закроеться файл не удаляеться , а нужно на оборот , только запустил сразу удалил . в общем вот код сценария :

Код:
Case $Button4
$file=_TempFile(@ScriptDir,'~','.cmd',5)
$sCode = '@echo off' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'Код командной строки' & @CRLF & _
		'pause'

FileWrite($file, $sCode)
FileClose($file)
RunWait($file)
FileDelete($file)


суть в том что программа работает цыклически , тоесть в общем можно сказать что это Java сервер работающий под командной строкой ...

вся проблема в функции

Код:
RunWait($file)


Тоесть он не удалит пока она не окончит свою работу , если же поставить скрипт просто Run($file) то скрипт FileDelete($file) выполниться и программа ~.cmd не успеет запуститься , в общем подумав - сделав вывод что нужно выполнить скрипт FileDelete($file) с заданным временем , а точнее пошаговые действия :
исполняеться скрипт Run($file) после чего спустя 5 секунд выполняеться скрипт FileDelete($file)

Собственно сам вопрос :
- как сделать так что бы сценарий FileDelete($file) выполнился через 5~10 секунд (определённое время [ещё не решено сколько нужно времени - нужно вычислять]) ? в общем помогите , поиск привёл опять меня сюда .
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Костыли ненужны. Запускай 'Код командной строки' через Run и будет счастье.
 
Автор
N

NCsoft

Новичок
Сообщения
24
Репутация
0
Если бы это мне подходило бы , то давно бы уже это сделал бы , зачем предлагать то что не относиться к вопросу функции ?
- спросил скрипт задержки времени выполнения сценария , мне дают ответ создания нового сценария :laugh:

-а что если это к примеру программа защиты сервера ? тоесть её могут запускать те люди чей серийный номер совпадает с базой данный клиентов а?

с вашей функцией что Вы предложили можно просто не писать программу меню , а просто клиенту предоставить все батники и воля , индивидуальности никакой нету и программа будет подвергнула к распространению , а что насчёт кода в .cmd который создаёться с помощью меню , его подобрать не реально так как у него привязки от запускаемого файла да и код очень длиный , и найти его куда он создался тоже не реально так как $file=_TempFile(@ScriptDir,'~','.cmd',5) это пример для того что бы вы имели ввиду о чём хоть идёт речь , а запущенная программа с скриптом - это же и есть C:\Windows\System32\cmd.exe , так что толку нету , в общем обосновывать и рассказывать нету толку на основание того что это Вам не нужно , ведь просьба о помощи состояла в скрипте о задержки ...

к стати спасибо за помошь об отклике и уважаю Вас за то что уделили время для ознакомления и ответа в данной петиции , но всё же уже сам логику включил и подобрал сценарий

вот что меня спасло :

Код:
Case $Button4
$file=_TempFile(@ScriptDir,'~','.cmd',5)
$sCode = '@echo off' & @CRLF & _

        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'pause'

FileWrite($file, $sCode)
FileClose($file)
Run($file)
Sleep(1000)
FileDelete($file)


тоесть заменить RunWait($file) на Run($file) после чего задать время задержки выполнения сценария Sleep(1000) а затем только скрипт FileDelete($file)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Можно ещё так попробовать:

Код:
$sFile = _TempFile(@ScriptDir, '~', '.cmd', 5)
$hFile = FileOpen($sFile, 2)

$sCode = _
        '@echo off' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'Код командной строки' & @CRLF & _
        'pause'

FileWrite($hFile, $sCode)
FileClose($hFile)

Run(@ComSpec & ' /С "' & $sFile & '"', '', @SW_HIDE)
FileDelete($sFile)
 
Верх