2015-01-05 5 views
0

Итак, я пытаюсь настроить скрипт, который выполняет файл, загружаемый с URL-адреса.autoit - как выполнить загруженный файл?

На данный момент у меня есть этот код, который просто запустит браузер по умолчанию, а затем получит доступ к URL-адресу, введенному в поле ввода (что затем приведет к загрузке).

$inputBox = GUICtrlRead($downloadsURL) 
ShellExecute($inputBox) 

Файл в настоящее время загружается в текущий каталог пользователей «Загрузки» (Windows Box).

Что было бы «надежным» решением для выполнения загруженного файла?

Имена файлов часто меняются ... был ли способ переименовать загруженный файл?

Или, может быть, убедитесь, что у меня есть «чистый» каталог для загрузки сначала, а затем автоматически запускает любой файл в каталоге после запуска скрипта?

ответ

1
  1. Вы всегда должны очищать исходные файлы для скачивания. Оставить неиспользуемое пространство для конечного пользователя не является тарифом.
  2. Вы действительно не дали нам многого для продолжения. GUICtrlRead просто означает, что вы читаете элемент управления (я предполагаю, что поле ввода). И если это URL-адрес, я бы предложил использовать InetGet() для загрузки файла в определенное место, а затем использовать Run или ShellExecute для запуска файла (если это тот файл, который нужно запустить таким образом).

Так это может выглядеть так:

Global $gszDir = @DocumentsCommonDir 
Global $gszFileName = "mydownloadfile.exe" 
Global $gszURL = "URL To File To Download" 

_DownloadAndRemoveOriginal($gszURL, $gszDir, $gszFileName) 
If @error Then 
    MsgBox(16 + 262144, "Error", "Error downloading: " & @error) 
    Exit 1 
EndIf 

Func _DownloadAndRemoveOriginal($szURL, $szDirectory, $szFileName) 

    ; remove old downloaded file 
    Local $szFullPath = $szDirectory & "\" & $szFileName 
    If FileExists($szFullPath) Then 
     FileDelete($szFullPath) 
    EndIf 

    ; download and wait for download to complete 
    Local $iGet = InetGet($szURL, $szFullPath, 1, 0) 
    If Not $iGet Then 
     ; failed 
     Return SetError(1, 0, 0) 
    EndIf 

    Local $iRet = ShellExecute($szFullPath) 
    Return SetError(0, 0, $iRet) 
EndFunc 
Смежные вопросы