Jump to content
rootx

FileOpenDialog multiple files path ? [SOLVED]

Recommended Posts

rootx

Why if I select only one file the array doesn't return the path?? And 4 multiple files return the row PATH? There is a mode to have in the same case signle or multiple selection the path included in the file name? THX

#include <Array.au3>
#include <File.au3>

Local $spFile

$mFile = FileOpenDialog("apri", @ScriptDir & "", "Images (*.iso)", 1 + 4 )
If @error Then
    ConsoleWrite("error")
Else
    $spFile = StringSplit($mFile, "|")
EndIf

_ArrayDisplay($spFile)

 

Edited by rootx

Share this post


Link to post
Share on other sites
JLogan3o13

@rootx when you specify single file, FileOpenDialog returns a String of full path. When you select multiple files option it returns an array, 0 index is path and the rest are filenames. If you want full path for all files, either loop through the array and concatenate the 0 index to the file name, or (easier) just use _FileListToArray and choose the $bReturnPath = True option.


√-1 2^3 ∑ π, and it was delicious!

How to get your question answered on this forum!

Share this post


Link to post
Share on other sites
rootx

My solution....

#include <Array.au3>
#include <File.au3>

Local $spFile

$mFile = FileOpenDialog("apri", @ScriptDir & "", "Images (*.iso)", 1 + 4 )
If @error Then
    ConsoleWrite("error")
Else
    $spFile = StringSplit($mFile, "|")
     If UBound($spFile) = 2 Then
         MsgBox("","","one file")
         ConsoleWrite($spFile[1]&@CRLF)
     Else
         MsgBox("","","more than two files")
         $path = $spFile[1]
         _ArrayDelete($spFile, 0)
         _ArrayDelete($spFile, 0)
         For $x = 0 to UBound($spFile)-1
             ConsoleWrite($path&$spFile[$x]&@CRLF)
         Next
    EndIf
EndIf

 

Share this post


Link to post
Share on other sites

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

    • Gringo
      By Gringo
      Hi,
      I'm trying to:
      -Select a file in a folder (to store it to an ini file)
      -Write the file on an ini
      -Copy files to the folder selected by the user
      instead of using FileOpenDialog then FileSelectFolder, I was wondering if it was possible to do the whole thing only with FileOpenDialog spliting the value returned in 2 variables. I got something like that for the first part (select a file and store it to an ini file)
      Local $message = "Select your executable" Local $pathk = FileOpenDialog($message, "C:" & "", "Select the executable you want to terminate (*.exe)", 1 + 4) Local $path = "None" ;ici je dois copier les fichiers $split = StringSplit($pathk, "\") $tokill = $split[$split[0]] If @error Then MsgBox(4096, "", "No Executable chosen") Else MsgBox(4096, "", $pathk & " Will be terminated " & @LF & @LF & "Press OK to EXIT ") IniWrite(@ScriptDir & "\path.ini", "Torun", "path", $path) IniWrite(@ScriptDir & "\path.ini", "Tokill", "pathk", $tokill) EndIf As you can see I manage to split the value returned by FileOpenDialog to have only the exe but as a noob I can't manage to get the path to copy the files I need to the same path.
      Any idea? ^^
    • PINTO1927
      By PINTO1927
      Hello guys,
      I'm working on this script:
      Case $BTN Global $URL = FileOpenDialog("IMPORT FILE", $DESKTOP, "ALL FORMAT (*)", 4) $DIR_DEST = "C:\DIR-WORK\list\IMPORT_DOC\" DirCreate($DIR_DEST) Local $LINE For $t = 1 To $URL[0] _FileReadToArray($URL[$t], $LINE) For $u = 1 To $LINE[0] FileCopy($URL[$u], $DIR_DEST) Next Next the selected files via OpenFileDialog must be copied to the folder $DIR_DEST.
       
    • Slym
      By Slym
      Hi there,
      There is something weird with FileSaveDialog. It takes approximately 8 seconds on my computer to return after clicking on OK.
      When compiling this exact code it looks faster but I still have this slow behaviour on another compiled software (LinuxLive USB Creator).
      $DEBUG_TIMER=TimerInit() $source_file = FileOpenDialog("Please choose an ISO image of LinuxLive CD", "", "ISO / IMG / ZIP (*.iso;*.img;*.zip)", 1,"") ConsoleWrite("It took "&Round(TimerDiff($DEBUG_TIMER)/1000,1)&" seconds to select ISO") Do you know what could cause this ?
      Thank you for your help
       
      PS : I'm still looking for AutoIT devs to help me on LinuxLive USB Creator. If interested, please contact me.
    • AlexChernavsky
      By AlexChernavsky
      I'm having a strange issue with using FileOpenDialog to select a file. Everything works fine the first time you select a file. But if you change your mind (while the program is still running) and want to select a different file, nothing changes. The program is "stuck" with the first selection you made, and nothing you do will change that selection in the input box.

      I pulled the function below out of my program, and I had to modify it a bit to make it run on its own. But it's basically the same as the original.

      To see the problem in action, click on either of the two buttons that say, "Choose other file...". Select any file from the list. Click on the "Open" button. So far, so good. Now, repeat the process again. See? The original file you selected is still listed in the input box.

      I'm stumped by this one.

      Thanks in advance.

      -- Alex Chernavsky in Rochester, NY


      #include <GUIConstantsEx.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> _ConfirmParametersWithUser("test.txt", "test2.txt", 16, 1000, 3000, "InputFile", "WriteToFile", "Testing") Func _ConfirmParametersWithUser($sInputFileName, $sOutputFileName, $iNumberOfProblems, $iMinTime, $iMaxTime, $sSourceOfProblems, $sOutputType, $sCondition) Local $hSetParametersForm ; Handle to GUI Local $hRadio1 Local $hRadio2 Local $hRadio3 Local $hRadio4 Local $hInputFileName Local $hChooseInputFile Local $hOutputFileName Local $hChooseOutputFile Local $hTrialsPerSession Local $hTime1 Local $hTime2 Local $hCondition Local $hExitButton Local $hHelpButton Local $hContinueButton Local $nMsg Local $sTemp $sInputFileName = @ScriptDir & "\" & $sInputFileName $sOutputFileName = @ScriptDir & "\" & $sOutputFileName $hSetParametersForm = GUICreate("Reaction Time Program: Set Parameters", 580, 578, -1, -1) GUICtrlCreateLabel("Reaction Time Program", 175, 3, 205, 23) GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif") GUICtrlCreateLabel("Based on work by Seth Roberts", 200, 29, 155, 15) GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif") ;GUICtrlSetBkColor(-1, 0xCCFFCC) ; Give it a green background to make it easier to position it (it's a temporary thing to help design the GUI) GUICtrlCreateGroup("Source of arithmetic problems: ", 40, 50, 528, 105) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUIStartGroup() $hRadio1 = GUICtrlCreateRadio("Use problems included with source code", 64, 80, 257, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") If $sSourceOfProblems = "SourceCode" Then GUICtrlSetState(-1, $GUI_CHECKED) EndIf $hRadio2 = GUICtrlCreateRadio("Read problems from input file: ", 64, 104, 280, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") If $sSourceOfProblems = "InputFile" Then GUICtrlSetState(-1, $GUI_CHECKED) EndIf $hInputFileName = GUICtrlCreateInput($sInputFileName & " ", 81, 124, 380, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetState($hInputFileName, $GUI_FOCUS) Send("{end}") ; This line and the one before it are necessary to right-align the text (useful in case of long path names, so that the left part gets cut off, not the right part) $hChooseInputFile = GUICtrlCreateButton("Choose other file...", 465, 121) If $sSourceOfProblems = "InputFile" Then GUICtrlSetState($hChooseInputFile, $GUI_ENABLE) Else GUICtrlSetState($hChooseInputFile, $GUI_DISABLE) EndIf GUICtrlCreateLabel("Number of trials (problems) presented per testing session:", 48, 167, 345, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $hTrialsPerSession = GUICtrlCreateInput($iNumberOfProblems, 397, 165, 30, 22, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER)) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlCreateGroup("Random delay between trials (in milliseconds): ", 40, 198, 349, 89) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") GUICtrlCreateLabel("Minimum delay:", 64, 224, 97, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlCreateLabel("Maximum delay :", 64, 256, 104, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $hTime1 = GUICtrlCreateInput($iMinTime, 176, 224, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER)) $hTime2 = GUICtrlCreateInput($iMaxTime, 176, 256, 41, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER)) GUICtrlCreateGroup("Upon completion of the testing session: ", 40, 296, 528, 110) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $hRadio3 = GUICtrlCreateRadio("Display summary and append data to output file: ", 64, 325, 422, 17) If $sOutputType = "WriteToFile" Then GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $hOutputFileName = GUICtrlCreateInput($sOutputFileName & " ", 81, 350, 380, 20) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetState($hOutputFileName, $GUI_FOCUS) Send("{end}") ; This line and the one before it are necessary to right-align the text (useful in case of long path names, so that the left part gets cut off, not the right part) $hChooseOutputFile = GUICtrlCreateButton("Choose other file...", 465, 347) If $sOutputType = "WriteToFile" Then GUICtrlSetState($hChooseOutputFile, $GUI_ENABLE) Else GUICtrlSetState($hChooseOutputFile, $GUI_DISABLE) EndIf $hRadio4 = GUICtrlCreateRadio("Display summary but do not write data to output file", 64, 379, 320, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") If $sOutputType = "DisplayOnly" Then GUICtrlSetState(-1, $GUI_CHECKED) GUICtrlCreateGroup("Please describe the condition for this test:", 40, 417, 520, 90) GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif") $hCondition = GUICtrlCreateInput("", 54, 447, 500, 20) GUICtrlCreateLabel("Example: ""45 mins. after taking 3 tablespoons of flaxseed oil""", 56, 477, 550, 28) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") $hHelpButton = GUICtrlCreateButton("Help", 272, 534, 75, 25) $hContinueButton = GUICtrlCreateButton("Continue", 382, 534, 75, 25, $BS_DEFPUSHBUTTON) $hExitButton = GUICtrlCreateButton("Exit Program", 488, 534, 75, 25) GUICtrlSetState($hCondition, $GUI_FOCUS) ; Set the focus to the "Condition" input box GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $hRadio1 GUICtrlSetState($hChooseInputFile, $GUI_DISABLE) Case $hRadio2 GUICtrlSetState($hChooseInputFile, $GUI_ENABLE) Case $hRadio3 GUICtrlSetState($hChooseOutputFile, $GUI_ENABLE) Case $hRadio4 GUICtrlSetState($hChooseOutputFile, $GUI_DISABLE) Case $hChooseInputFile $sTemp = FileOpenDialog("Choose input file", @ScriptDir & "\", "All files (*.*)", 1 + 2) If $sTemp Then $sInputFileName = $sTemp $hInputFileName = GUICtrlSetData($hInputFileName, $sInputFileName & " ") EndIf GUICtrlSetState($hCondition, $GUI_FOCUS) ; Return focus to the "Continue" button Case $hChooseOutputFile $sTemp = FileOpenDialog("Choose output file", @ScriptDir & "\", "All files (*.*)", 2 + 8) If $sTemp Then $sOutputFileName = $sTemp $hOutputFileName = GUICtrlSetData($hOutputFileName, $sOutputFileName & " ") EndIf GUICtrlSetState($hCondition, $GUI_FOCUS) ; Return focus to the "Continue" button Case $hHelpButton ShellExecute("http://www.astrocyte-design.com/reaction-time/index.html") Case $hContinueButton ExitLoop Case $hExitButton Exit EndSwitch WEnd If (BitAND(GUICtrlRead($hRadio1), $GUI_CHECKED) = $GUI_CHECKED) Then $sSourceOfProblems = "SourceCode" Else $sSourceOfProblems = "InputFile" EndIf $iNumberOfProblems = GUICtrlRead($hTrialsPerSession) $iMinTime = GUICtrlRead($hTime1) $iMaxTime = GUICtrlRead($hTime2) If (BitAND(GUICtrlRead($hRadio3), $GUI_CHECKED) = $GUI_CHECKED) Then $sOutputType = "WriteToFile" Else $sOutputType = "DisplayOnly" EndIf $sCondition = GUICtrlRead($hCondition) $sCondition = StringReplace($sCondition, ",", "") ; Remove any commas that the user happens to enter (they interfere with the CSV file format) GUIDelete($hSetParametersForm) EndFunc ;==>_ConfirmParametersWithUser
    • johnmcloud
      By johnmcloud
      Hi guys i have a question,
      Can i exclude a extension from FileOpenDialog? Example i want to include all file ( *.*) except txt ( *.txt )

      My solution for now is:

      $Exstension = StringRegExpReplace(@WorkingDir & "Test.txt", "^.*.", "") If $Exstension = "txt" Then MsgBox(0,0,"Error") Return EndIf
      But i like to make it unselectable in FileOpenDialog like the classic filter, but in an opposite way.
      Is possible?
      Thanks
×