Что нового

Поиск и открытие .exe файла, не имея представление об его местоположение

scanfail

Знающий
Сообщения
244
Репутация
17
Искал много, не смог найти нужную мне тему, увидел только 1 http://autoit-script.ru/index.php/topic,4400.0.html, но при запуске скрипта Arei, винда выдаёт ошибку у меня, проверял у друга, такая же ошибка ...

Прошу помочь! Думаю многим будет интересно.
 

axlwor

Скриптер
Сообщения
657
Репутация
147
у меня скрипт ищет. находит, если есть.
в общем все нормально работает
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
scanfail [?]
винда выдаёт ошибку у меня, проверял у друга, такая же ошибка
Какую ошибку? (Скриншот).
Файл можно искать на всех дисках, но это будет долго.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У меня почти работает, но находит.
Почти, потому что флоппи-дисковод есть и он пуст.
Из-за этого система выдает ошибку, однако после нескольких нажатий
"Отмена", поиск продолжается успешно.
Если отключить поиск на всех типах дисков, кроме жесткого, то получится
так примерно (из скрипта Arei):
Код:
#include <File.au3>
$d = 0
$var = DriveGetDrive( "all" )

For $i = 1 to $var[0]
	;MsgBox(64, "Диск", $var[$i])
	$var2 = DriveGetType($var[$i])
	;MsgBox(64, "Тип диска:", $var2)
	If $var2 = "Fixed" Then
		_FindFiles( $var[$i], 'qwerty.txt')
	EndIf	
Next

Func _FindFiles($sRoot, $sFile)
    Local $FileList
    $FileList = _FileListToArray($sRoot, $sFile, 1)
    If Not @error Then
        For $i = 1 To $FileList[0]
			ConsoleWrite($sRoot & '\' & $FileList[$i] )
			If $d = 0 then
				Run($sRoot & '\' & $FileList[$i], "")
				$d = 1
			Endif
		Next
    EndIf
    $FileList = _FileListToArray($sRoot, '*', 2)
    If Not @error Then
        For $i = 1 To $FileList[0]
            _FindFiles($sRoot & '\' & $FileList[$i], $sFile)
        Next
    EndIf
EndFunc
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Попробую объяснить что мне нужно сделать, может быть найдется другое решение ... Есть игра, при установке, её патчер идет на раб.стол, а нужный файл для быстрого запуска остается в самом папке игры, мне нужен такой скрипт, который нашел бы её и запускал игру моментально через неё, есть ли другое решения, кроме как, найти и открыть?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
scanfail
Обычно при установке игры или какой-то программы
идет запись в системный реестр, где будет прописан путь к этой
программе. Тогда, можно получить этот путь из системного реестра.
Если эта игра ничего такого в реестр не пишет, тогда поиском. Однако,
что бы при каждом запуске не искать нужный файл, можно поступить так:

При первом запуске скрипта программа ищет запись в INI файле или реестре путь к файлу, не находит и ищет файл везде.
Как только файл найден, путь записывается в ini файл, либо в реестр
и файл запускается. При повторном запуске скрипта путь берется из INI
файла или реестра, проверяется есть ли файл по этому пути и запускает файл. Это уже будет быстрее. И т.д
 
Автор
S

scanfail

Знающий
Сообщения
244
Репутация
17
Все отлично придумано! Однако, для такого новичка как я, это будет сложновато, я бы даже сказал, невыполнимо ...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 473
Репутация
2 403
Yuriy [?]
Если отключить поиск на всех типах дисков, кроме жесткого, то получится
А зачем проверять DriveGetType, когда можно это указать в DriveGetDrive:

Код:
...

$var = DriveGetDrive("FIXED")

For $i = 1 To $var[0]
	_FindFiles($var[$i], 'qwerty.txt')
Next

...


и функцию поиска я бы использовал другую (в целях ускорения), которая работает с dir.
 
Верх