Jump to content
swatsapkraz

Download and read file help

Recommended Posts

swatsapkraz

First script here. Thanks for taking the time.

I want to download a file from my dropbox or other cloud file host and I want autoit to read the file and proceed.

Here are the references I've gone through, it's just I'm not familiar yet with autoit so I'm looking for advice:
https://www.autoitscript.com/autoit3/docs/functions/InetGet.htm

https://www.autoitscript.com/autoit3/docs/functions/FileRead.htm

 

How would I start out downloading a text file from dropbox and if in the file there is a 1 then it will proceed with the rest of the script if there is a 0 or if the file cannot be downloaded I want it to just end.

 

Thank you for taking the time to read this and I apologize in advance if this seems very trivial for some but this is my first script and I'm hoping this is the correct place to ask this question.

Edited by swatsapkraz

Share this post


Link to post
Share on other sites
Neutro

Hello swatsapkraz,

What you want to do can be translated to search for "1" in the file and proceed if found, otherwise do nothing (searching for 0 is not needed if 1 is not found).

I created 2 dropbox links, the first one links to a file which contains 1 and the other do not:

https://www.dropbox.com/s/c27k3gv5oanhjvc/file_to_proceed.txt?dl=1

https://www.dropbox.com/s/g76mnemzg2lai4z/file_to_NOT_proceed.txt?dl=1

Use the following code to download the above files (change $file_url with the link you want to test) and check if they need to be proceeded or not:

#include <File.au3>

$file_url = "https://www.dropbox.com/s/g76mnemzg2lai4z/file_to_NOT_proceed.txt?dl=1"

;downloading the file

$download_result = InetGet($file_url, @scriptdir & "\downloaded_file.txt", 3)

if $download_result <> 0 Then ;if the download worked

   ;checking if there is 1 or 0 inside the file

   $file_content = ""

   _FileReadToArray(@scriptdir & "\downloaded_file.txt", $file_content)

        if IsArray($file_content) then ;if the file is not empty we search inside for 1

            $search_for_number_one = _ArraySearch($file_content, "1", "", "", "", 1)

            if $search_for_number_one <> -1 then ; the number 1 has been found inside the file so it must be proceeded

                msgbox("","","file contains 1 and must be proceeded")

            else

                msgbox("","","file does NOT contain 1 and must NOT be proceeded")

            EndIf

        EndIf

endif

Enjoy :)

Edited by Neutro
  • Like 1

Share this post


Link to post
Share on other sites
swatsapkraz

Very nice. Thank you, I did try it and it works flawlessly. 

Share this post


Link to post
Share on other sites
Danyfirex

@Neutro Try to use some best coding practices.

 

Saludos

Share this post


Link to post
Share on other sites
VIP
34 minutes ago, Danyfirex said:

@Neutro Try to use some best coding practices.

Like this ?:

Global $inetFile = 'https://www.dropbox.com/s/c27k3gv5oanhjvc/file_to_proceed.txt?dl=1'
Global $localFile = @ScriptDir & "\file_to_proceed.txt"

ConsoleWrite("Download File: " & $inetFile & @CRLF)
ConsoleWrite("Save to: " & $localFile & @CRLF)
Global $dlResult = InetGet($inetFile, $localFile, 3) ? "OK" : "Failed" ; Download file
Global $iError = @error, $iKey = "1"
ConsoleWrite("Download result: " & ($dlResult) & " - Error=" & $iError & @CRLF)
If ($dlResult <> "OK") Then Exit MsgBox(48, @ScriptName, "Download file Error: " & $iError & @CRLF & "Link: " & $inetFile)

Global $sFileContent = FileRead($localFile) ;read file to var
If StringInStr($sFileContent, $iKey) Then ; check key
    MsgBox(32, @ScriptName, "OK - Do somethink here") ; OK
Else
    MsgBox(48, @ScriptName, "ERROR - " & $iKey & " is not found")
EndIf

 

Saludos

Edited by Trong

Regards,
 

Share this post


Link to post
Share on other sites
Danyfirex

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • gahhon
      By gahhon
      Hi,
      I have a program that is read data from the .txt file, since the .txt file is only readable, viewable and editable for the admin user.
      But how could I lock it with password, or some other technique that can helps to achieve this?
      Thanks for the advanced information.
    • gahhon
      By gahhon
      Hi,
      How can I the trigger the another button functions without waiting the previous function to finish execute?
      Any advise?
      I couldn't find any relevant topics via google.
      Thanks a lot.
    • SharpDressedMan
      By SharpDressedMan
      Hi all,
      I need to use ControlMove() on some controls of a hidden GUI window.
      This works properly on a GUI window created with default style, but does not work on a GUI window created with style $WS_OVERLAPPEDWINDOW
      func GUItest($bOverlapped) $m = GUICreate("test", 200, 100, -1, -1, $bOverlapped ? $WS_OVERLAPPEDWINDOW : -1) $g = GUICtrlCreateButton("test", 0, 0) ControlMove($m, "", $g, 30, 30) GUISetState() endfunc GuiTest(false) ; button 'test' properly moved to (30,30) GuiTest(true) ; button 'test' not moved and still sitting at (0,0) Any reason for this unexpected behavior ?
      Any workaround to fix this ?
      Thanks for any help
    • 2Toes
      By 2Toes
      Hi all..
      I'm having slight issue that has be a bit puzzled.
      I have an Input control.. After a certain function runs, it Disables that Input control, and sets it to ReadOnly.
      When running another certain function, it re-Enables that Input control, and sets the style back to Default.
      Which does work, however, when typing into the Input control after re-Enabling it, the text appears as a light gray color, rather than its original black color.
      I'm sure there's a simple solution here.. But what that is, appears to be beyond me.
      Here is a simplified example code:
      #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= Global $Form1 = GUICreate("Form1", 245, 215, 192, 124) Global $disableBTN = GUICtrlCreateButton("Disable", 32, 64, 75, 25) Global $enableBTN = GUICtrlCreateButton("Enable", 128, 64, 75, 25) Global $Input1 = GUICtrlCreateInput("", 32, 120, 169, 21) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $disableBTN disable() Case $enableBTN enable() EndSwitch WEnd Func disable() GUICtrlSetState($Input1, $GUI_DISABLE) GUICtrlSetStyle($Input1, $ES_READONLY) EndFunc Func enable() GUICtrlSetState($Input1, $GUI_ENABLE) GUICtrlSetStyle($Input1, $GUI_SS_DEFAULT_INPUT) EndFunc  
      Any help would be greatly appreciated
      Thank you in advance!
    • jantograaf
      By jantograaf
      Hi all,
      I'm trying to create a script that runs a JSON-query and then can retrieve some variables out of the returned, decoded object using JSON.au3. I have tried some other examples on this forum, but I'm stuck at one point. My query works perfectly and gets loaded into the variable $data. Then, decoding $data to $object seems to work as well. But then I can't get the date-field out of this JSON-structure with my script.
      The JSON-structure returned looks like this:
      { "content": [ { "id": "451ec583-8f27-4926-82a3-a2d85e57a110", "createdDate": "2018-08-08T08:40:57.449004Z", "updatedDate": "2018-08-08T08:40:57.449004Z", "lastOpenedDate": "2018-08-08T08:40:57.449004Z", "date": "2018-04-26T00:00:00", "description": "X-Ray Exam", "patient": { "id": "f857238a-c75d-4760-b8d1-8f50f8f9bbfa", "createdDate": "2018-08-08T08:40:37.623976Z", "updatedDate": "2018-08-08T08:40:37.623976Z", "lastOpenedDate": "2018-08-08T08:40:37.623976Z", "name": "Fuerstonia", "birthDate": "2014-06-08", "breed": "", "chip": "", "color": "", "damsire": "", "sire": "", "neutered": false, "orthancUuid": "", "sex": "U", "species": "Paard", "ueln": "De 431310762114", "pmsReference": "", "origin": "" }, "type": "study", "accessionNumber": "KME201806960467", "instanceUid": null, "orthancUuid": "", "sent": false, "seriesCount": 0, "modalityType": "RX", "typeAndModality": "study RX", "client": { "id": "be627195-8458-4927-8446-f1ef37b917a4", "createdDate": "2018-08-08T08:40:31.433968Z", "updatedDate": "2018-08-08T08:40:31.433968Z", "lastOpenedDate": "2018-08-08T09:26:49.512298Z", "via": "", "extraInfo": "", "pmsReference": "", "contact": { "id": "406cc555-c491-4c29-b6bb-8d903f0e35a9", "createdDate": "2018-08-08T08:40:31.428968Z", "updatedDate": "2018-08-08T08:40:31.428968Z", "lastName": "Client 1", "firstName": "", "company": "", "email": "", "language": "nl", "phone": "", "address": { "id": "6fc7703c-137a-4e0a-ba96-8c7f38f2044b", "city": "", "country": "", "line": "", "postalCode": "" } } } }, My script looks like this:
      #RequireAdmin #include <json.au3> #include <inet.au3> #include <File.au3> ;Create a handle to a logfile (will be created if it doesnt exist) Global $logfile = FileOpen("C:\VSOL\VSTK\Logs\MigrationFix\MigrationFix.log",9) FileWriteLine($logfile,"Start script") ;Create the URL with the JSON-query $URL = "http://localhost:8080/v0/studies/?seriesCount=1" ;Catch the query output into a variable $data = _INetGetSource($URL) ;Check if there is any data at all in this variable, if not, exit If Not $data Then MsgBox(1,"Error","No answer. Server is probably not running.") Exit EndIf ;For debugging purposes FileWriteLine($logfile,$data) ;Decode the JSON_string into a useable object $object = Json_Decode($data,1000) If @error Then FileWriteLine($logfile,"Error decoding JSON") Exit EndIf Local $i = 0 ;Start a loop to retrieve the study date of each study... While 1 $study_date = json_get($object,'[' & $i & '].date') If @error Then FileWriteLine($logfile,"Study-Date retrieval error") ExitLoop EndIf $i = $i + 1 WEnd ;Close the logfile FileWriteLine($logfile,"Stop script") FileClose($logfile) ;Open the logfile for quick reference ShellExecute("C:\VSOL\VSTK\Logs\MigrationFix\MigrationFix.log") If believe it has something to do with my json_get($object...)-command. Anyone who can point me in the right direction?
      Thanks in advance!
      Kind regards
×