Что нового

[Файловая система] Запуск *.exe без имени ?

pekich

Новичок
Сообщения
19
Репутация
2
Известно что в папке лежит один файл *.exe. Его имя неизвестно.
Как его запустить?
Понятно что надо вернуть название всех файлов в папке .
А как дальше?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
pekich
Если достаточно имени первого попавшегося EXE-файла, то можно так сделать:

Код:
; НАЧАЛО

 $SEARCH=FileFindFirstFile(@ScriptDir&'\*.exe')
 $FILE=FileFindNextFile($SEARCH) 
 FileClose($SEARCH)

 Run(@ScriptDir&'\'&$FILE)

; КОНЕЦ
 
Автор
P

pekich

Новичок
Сообщения
19
Репутация
2
Не знал что так можно применять FileFindFirstFile и FileFindNextFile.
В справке об этом мутно. Спасибо.

Поясните, зачем в Вашем коде надо FileClose, какой ранее открывался текстовый файл?
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
pekich

Функция FileFindFirstFile() создаёт файловый дескриптор, который сохраняется в переменной $SEARCH...
Затем функция FileFindNextFile() ищет следующий файл, соответствующий маске, и возвращает его имя в переменную $FILE...
FileClose() нужен для того чтобы освободить место, выделенное для файлового дескриптора...
 
Автор
P

pekich

Новичок
Сообщения
19
Репутация
2
snoitaleR

Извините за дотошность. Можно просто обнулить $SEARCH?
Так будет верно? Если нет, то в чем тонкость?
Код:
$SEARCH=FileFindFirstFile(@ScriptDir&'\*.exe')
    MsgBox(0, 'Test', $SEARCH)
 $FILE=FileFindNextFile($SEARCH)
   MsgBox(0, 'Test',  $FILE)
; FileClose($SEARCH)
   $SEARCH=0;
MsgBox(0, 'Test', $SEARCH)
 Run(@ScriptDir&'\'&$FILE)
 Exit
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
pekich
Точно сказать не могу, но думаю, что кроме освобождения переменной $SEARCH внутри FileClose() выполняются некторые другие действия, однако пропуск в скрипте FileClose() не критичен, так как AUTOIT автоматически закрывает все открытые файлы при завершении скрипта...
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
pekich,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
P

pekich

Новичок
Сообщения
19
Репутация
2
Всем спасибо.Тема решена.
 
Верх