Jump to content

Search the Community

Showing results for tags '_FileListToArray'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Announcements and Site News
    • Administration
  • AutoIt v3
    • AutoIt Help and Support
    • AutoIt Technical Discussion
    • AutoIt Example Scripts
  • Scripting and Development
    • Developer General Discussion
    • Language Specific Discussion
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • AutoIt Team
    • Beta
    • MVP
  • AutoIt
    • Automation
    • Databases and web connections
    • Data compression
    • Encryption and hash
    • Games
    • GUI Additions
    • Hardware
    • Information gathering
    • Internet protocol suite
    • Maths
    • Media
    • PDF
    • Security
    • Social Media and other Website API
    • Windows
  • Scripting and Development
  • IT Administration
    • Operating System Deployment
    • Windows Client
    • Windows Server
    • Office

Categories

  • Forum FAQ
  • AutoIt

Calendars

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Member Title


Location


WWW


Interests

Found 12 results

  1. Hello, i want to search several directories for files with the largest numbers behind them (Like "video123") . They dont have a datatype. But there are also files with longer names and datatypes in these folders (Like "video778.mp4"). Is it possible to filter the _FileListToArray Syntax from to smth. like Here is my Code #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <array.au3> #include <File.au3> $filedir = @ScriptDir & "\" _checkfile() Func _checkfile() ConsoleWrite("______________________" & @CRLF) Local $arr[3] = ["music", "picture", "video"] For $i = 0 To UBound($arr) - 1 Local $arrayfiles = _FileListToArray($filedir & $arr[$i], $arr[$i] & "*", 1) If @error = 1 Then ConsoleWrite($arr[$i] & "Error 1") EndIf If @error = 4 Then ConsoleWrite($arr[$i] & "Error 2") ;Exit EndIf $arrayfilter = _ArrayMax($arrayfiles, 0, 1) Global $stringfiles = StringReplace($arrayfilter, $arr[$i], "") ConsoleWrite($arrayfilter & @CRLF) Next EndFunc ;==>_checkfile
  2. Hello there, So i need to clean up my directories a bit, so created a script that checks the amount of .lnk type files found and deletes each of them in a For loop. To do this task i'm using _FileListToArray function from File.au3 udf, the problem is that the variable assigned to this command dont seem to store any subscripts, i've been trying to figure out what i done wrong but i couldn't Variable $a stores local script directory Variable $b stores an array with the list of files found Variable $d is only for skipping the first subscript (0) that contains the amount of files found. The variable $b when used in a For loop returns this error: Any help is really appreciated. My script is below: #Include <File.au3> $a = @ScriptDir $b = _FileListToArray($a, ".lnk", 1, True) $d = 1 For $c in $b If $d <> 1 Then FileDelete($c) Else $d = 0 EndIf Next MsgBox(0, '', "Cleaned " & $b[0] & " links in " & $a) Exit 0
  3. Hey Everybody, as you know im on a very low autoit-level. My question is: How can i read all PDFs from a Folder wich is open and copy them to a Folder on a Desktop. The Folder wich contains the PDFs is variable Z:\Projektls\"*"*"*EVERYTIME ANOTHER ENDING"*"*"*"*" There can be 1 PDF or even 15 PDFs. i tried it with _FileListToArray and _FileCopy but i Need some help to understand this language THANKS!
  4. Hello, i have question. How put data from _FileListToArray to Combo ? I want fill combo with names of files from folder.
  5. Hi I'am trying to list files from folder sorted by name (same as the picture) i tried this code #include <File.au3> $arr = _FileListToArray("D:\2") _ArrayDisplay($arr) i am getting this result Any one could explain why it is putting 10-1 before 8-1 ? how can i make Autoit view file same as windows explorer ?
  6. This is more tricky than I thought it would be. I have been searching for some time now and can't seem to find an answer. To find the IE history manually I go to "C:UsersuserAppDataLocalMicrosoftWindowsHistory" and from there I select the subfolder(Today, Yesterday etc...) and check the files in it. So following this logic I came up with this which should normally work but it doesn't. #include <File.au3> #include <Array.au3> Local $File = RegRead ( "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "History" ) ;ConsoleWrite($File & @LF) Local $hSearch = _FileListToArray($File, Default, Default, True) _ArrayDisplay($hSearch) It returns some other files besides the Today, Yesterday folders. I assume this happens because they are not actually folders however since FileListToArray second parameter is set to default, which means all files if I understand correctly, then it should also return the paths of theToday folder. Anyone any ideas on this?
  7. Hi everyone, I've got a bit of code that gets the file name of a zip file in a particular directory and tried to unzip it. _FileListToArray should create an array and define $aArray[1] as the first file returned by the search. But when I try to use $aArray[1] for anything, I get the error: "==> Array variable has incorrect number of subscripts or subscript dimension range exceeded." Any thoughts? If $osbit = "32" Then Local $aFileList = _FileListToArray($extract_dir, "*win32*") _ExtractZip($extract_dir & $aArray[1], $extract_dir) ElseIf $osbit = "64" Then Local $aFileList = _FileListToArray($extract_dir, "*amd*") _ExtractZip($extract_dir & $aArray[1], $extract_dir) EndIf Thanks.
  8. This is a rather simple question, I would like to exclude certain files when I use _FileListToArray Local $fileList = _FileListToArray(@scriptdir, "*.au3") ;List of all AutoIT files to execute The above code fetches all au3 files, but I would like to exclude 2 specific files. It would be a hassle to use ArraySearch and ArrayDelete, so is there a way I could directly specify the exclusion in the filter criteria itself? Something like Local $fileList = _FileListToArray(@scriptdir, "*.au3|^"Utilities.au3";^"Helper.au3"") ;exclude Utilities.au3 and Helper.au3 Thank You!
  9. Hi guys, with help of M23 now i have this script: $Path = GUICtrlRead($FolderInput) $Pre = @TempDir & "\Test.exe" $Command = "-e -p" $Folders= _FileListToArray($Path, '*', 1) $Folders[0] = "@echo off" & @CRLF $fFlag = "" AdlibRegister("Update",333) For $i = 1 To UBound($Folders) - 1 If RunWait(@ComSpec & " /c " & $pre & " " & $command & " " & $Password & " " & '"' & $Path & "\" & $Folders[$i] & '"', @TempDir, @SW_HIDE) = 0 Then ConsoleWrite("Information - Success") Else $fFlag &= $i & "|" EndIf ConsoleWrite("Information - Fail") Next If $fFlag = "" Then If GUICtrlRead($FolderCheckboxCrypt) = $GUI_CHECKED Then Func() EndIf FileDelete(@TempDir & "\Test.txt") MsgBox(0, "Information","OK") Else $aFailed = StringSplit($fFlag, "|") $sMsg = "Error:" & @CRLF & @CRLF For $i = 1 To $aFailed[0] - 1 $sMsg &= $Folders[$aFailed[$i]] & @CRLF Next FileDelete(@TempDir & "\Test.exe") MsgBox(16, "Error", $sMsg) EndIf AdlibUnRegister("Update") WinSetTitle($GUI,"","Test name") EndFunc From option of _FileListToArray i see you can select exstension to process by array, ad example *.txt But i don' find something to exclude an extension from array. Someone can resolve this doubt? Thanks to all for support, i'll grateful to this forum
  10. Maybe is a stupid question, but i can't find a solution Func Basic() $Folder = GUICtrlRead($FileInput) If Not FileExists($Folder) Then MsgBox(16, "Error", "No folder") EndIf If FileExists(GUICtrlRead($FileInputCrypt) & "*.txt") Then MsgBox(16, "Errore", "Find txt folder") EndIf $Password=GUICtrlRead($UserInput) If $Password="" Then MsgBox(16,"Errore","No user input") EndIf $Path = GUICtrlRead($FileInput) $Folders= _FileListToArray($Path, '*', 1) $Folders[0] = "@echo off" & @CRLF $Pre = "C:\Test.exe" $Command = "-e -p" For $i = 1 to UBound($Folders) -1 $Success = $Folders[$i] = RunWait(@ComSpec & " /c " & $pre & " " & $command & " " & $Password & " " & '"' & $Path & "\" & $Folders[$i] & '"', @TempDir, @SW_HIDE) Next If GUICtrlRead($Checkbox) = $GUI_CHECKED Then File_Delete() EndIf If $Success Then MsgBox(0,"Information","Success") EndIf EndFunc When i have error messages by MsgBox, i want simply stop to go ahead with the script, without exit. How i can do? N.B. If need i'll post all script, but i think i need a function, but i don't know which. Thanks
  11. Hi guys, I know that normally when should ask for help you need to post a code. But this time i don't know how to start. I search in the guide and in the forum but i can't find a good example for what i'm want to do. What i want to do: 1) Make a GUI for select a folder ( i know how to do ) 2) Copy the complete path of all file in that folder ( ? ) and write them on a ini file 3) Make every line on .ini a variable ( ? ) for a cmd command ( i know how to do ) _FileListToArray i think is the right command, but i can't find a good example for starting scripting Thanks for support, John
  12. I know there's already several of these types of functions around the forum but there were some things I wanted to do different, so I wrote my own. In the tests I've done this appears to be working fine, but I'd appreciate a second look. The error returns and the first three parameters are the same as the vanilla _FileListToArray, but there are a couple new flags, and two new parameters. The new flags include: - enabling recursion (4) - disabling file count in element [0] (8) - enabling full path returns (16). The new parameters are: - $sCallback - this is the name of a function you want to run on each loop, it is passed an array with data relating to the current file search in the loop. If the callback function returns 0 then the item is processed normally. If it returns 1 the item is skipped (this can be used to skip entire folders being processed). If it returns -1 the entire function errors out with -1 and @extended is set to the callback function's @extended value. - $sCallbackUserParam - just an extra parameter that can be passed through to the callback function. Example with callback: #include <Array.au3> #include <_FileListToArrayRecursive.au3> Global $sWFile _FileListToArrayRecursive(@DesktopDir, '*', 4, '_Callback', 'Wfile') If @error = -1 And @extended = 42 Then MsgBox(0, '', 'You have a W file:' & @LF & $sWFile) Else MsgBox(0, '', 'No files/folders that start with W exist.') EndIf Global $aReadOnly = _FileListToArrayRecursive(@DesktopDir, '*', 1+4, '_Callback', 'readonly') Global $aEmpty = _FileListToArrayRecursive(@DesktopDir, '*', 1+4, '_Callback', 'empty') _ArrayDisplay($aReadOnly) _ArrayDisplay($aEmpty) Func _Callback($aParams) Switch $aParams[5] Case 'Wfile' If StringLeft($aParams[2], 1) == 'W' Then $sWFile = $aParams[1] & $aParams[2] Return SetExtended(42, -1) EndIf Case 'empty' If Not $aParams[3] Then If FileGetSize($aParams[0] & $aParams[1] & $aParams[2]) Then Return 1 EndIf Case 'readonly' If Not $aParams[3] Then If Not StringInStr(FileGetAttrib($aParams[0] & $aParams[1] & $aParams[2]), 'R') Then Return 1 EndIf EndSwitch EndFunc #include-once ; #FUNCTION# ==================================================================================================================== ; Name...........: _FileListToArrayRecursive ; Description ...: Lists files and/or folders in a specified path recursively ; Syntax.........: _FileListToArrayRecursive($sPath[, $sFilter = '*'[, $iFlag = 0[, $sCallback = ''[, $sCallbackUserParam = '' ] ] ] ] ) ; Parameters ....: $sPath - Path to search ; $sFilter - Optional: the filter to use, default is * ; $iFlag - Optional: specifies options about return, add flags together ; |$iFlag = 0 (Default) Return both files and folders ; |$iFlag = 1 Return files only ; |$iFlag = 2 Return folders only ; |$iFlag = 4 Search subfolders (Enable recursion) ; |$iFlag = 8 Make array 0-based (Disable return count in first element) ; |$iFlag = 16 Return full paths (default only returns from the search folder down) ; $sCallback - Optional: function to call on each loop. See remarks for details (default: none) ; $sCallbackUserParam - Optional: a parameter to pass to the Callback function (default: none) ; Return values .: @Error - 1 = Path not found or invalid ; |2 = Invalid $sFilter ; |3 = Invalid $iFilter ; |4 = No files found or folder inaccessible ; |5 = No files found or folder inaccessible ; |-1 = Callback function returned -1 ; Author ........: Rob Saunders (therks at therks dot com) ; Modified.......: ; Remarks .......: If $sCallback is defined the function will be called on each loop and it can alter what files are recorded ; in the return array. The Callback function runs on every file result because it is called *before* the flag ; filter for files/folders ($iFlag 1 or 2). ; Return 0 = Item is added (depending on $iFlag 1 or 2) ; Return 1 = Item is skipped (note: if you skip a folder it will not be searched either) ; Return -1 = Stop searching. Main func returns false, @error = -1, @extended = Callback's @extended value ; The function is passed one parameter, a 6 item array with values as follows: ; [0] root search folder ; [1] current sub folder ; [2] current filename match ; [3] 1 if file is a folder; 0 if not ; [4] current file count ; [5] $sCallbackUserParam ; ; Related .......: _FileListToArray ; Link ..........: ; Example .......: ; Note ..........: Some parts from original function (by SolidSnake) and _FileListToArrayEx (by DXRW4E) ; =============================================================================================================================== Func _FileListToArrayRecursive($sPath, $sFilter = '*', $iFlag = 0, $sCallback = '', $sCallbackUserParam = '') Local Const $FL_FILES = 1, $FL_FOLDERS = 2, $FL_RECURSE = 4, $FL_NOCOUNT = 8, $FL_FULLPATH = 16 If Not StringInStr(FileGetAttrib($sPath), 'D') Then Return SetError(1, 1, '') If StringRegExp($sFilter, '[\\/:><\|]|(?s)\A\s*\z') Then Return SetError(2, 2, '') If $iFlag < 0 Or $iFlag > 1+2+4+8+16 Then Return SetError(3, 3, '') $sPath = StringRegExpReplace($sPath, '[\\/]+$', '') & '\' Local $sFileTrack, $iFileCount, $hParentSearch, $hSearch, $hSubCheck, $sSubDir, $sFile, $iIsFolder, $sRegExFilter, $sAddFullPath, _ $iReturnFolders, $iReturnFiles, $iRecurse, $iReturnCount, $iSortOffset, _ $aCallbackData[6], $vCallbackReturn, $iCallbackExt $aCallbackData[5] = $sCallbackUserParam If BitAND($iFlag, $FL_FULLPATH) Then $sAddFullPath = $sPath If BitAND($iFlag, $FL_RECURSE) Then $iRecurse = 1 If StringReplace($sFilter, '*', '') Then ; If we ARE recursing, and the filter is something besides just * then initialize the regex filter $sRegExFilter = '(?i)^' & StringRegExpReplace(StringReplace(StringRegExpReplace($sFilter, '(\.|\||\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)', "\\$1"), '?', '.'), '\*+', '.*') & '$' $sFilter = '*' EndIf EndIf If BitAND($iFlag, $FL_FILES) Then $iReturnFiles = 1 ElseIf BitAND($iFlag, $FL_FOLDERS) Then $iReturnFolders = 1 Else $iReturnFiles = 1 $iReturnFolders = 1 EndIf If BitAND($iFlag, $FL_NOCOUNT) Then $iReturnCount = 2 ; Param for StringSplit $iSortOffset = 0 EndIf $hParentSearch = FileFindFirstFile($sPath & $sSubDir & $sFilter) If $hParentSearch = -1 Then Return SetError(4, 4, '') $hSearch = $hParentSearch While 1 $sFile = FileFindNextFile($hSearch) If @error Then If $hParentSearch = $hSearch Then ExitLoop FileClose($hSearch) $hSearch -= 1 $sSubDir = StringLeft($sSubDir, StringInStr(StringTrimRight($sSubDir, 1), '\', 0, -1)) ContinueLoop EndIf $iIsFolder = @extended If $sCallback Then $aCallbackData[0] = $sPath $aCallbackData[1] = $sSubDir $aCallbackData[2] = $sFile $aCallbackData[3] = $iIsFolder $aCallbackData[4] = $iFileCount $vCallbackReturn = Call($sCallback, $aCallbackData) If @error = 0xDEAD And @extended = 0xBEEF Then FileClose($hSearch) FileClose($hParentSearch) Return SetError(5, 5, '') ElseIf $vCallbackReturn = -1 Then $iCallbackExt = @extended FileClose($hSearch) FileClose($hParentSearch) Return SetError(-1, $iCallbackExt, '') ElseIf $vCallbackReturn Then ContinueLoop EndIf EndIf If $iRecurse Then If ($iIsFolder And $iReturnFolders) Or (Not $iIsFolder And $iReturnFiles) Then If Not $sRegExFilter Or ($sRegExFilter And StringRegExp($sFile, $sRegExFilter)) Then $sFileTrack &= '|' & $sAddFullPath & $sSubDir & $sFile $iFileCount += 1 EndIf EndIf If $iIsFolder Then $hSubCheck = FileFindFirstFile($sPath & $sSubDir & $sFile & '\' & $sFilter) If $hSubCheck = -1 Then ContinueLoop $sSubDir &= $sFile & '\' $hSearch = $hSubCheck EndIf Else If ($iIsFolder And $iReturnFolders) Or (Not $iIsFolder And $iReturnFiles) Then $sFileTrack &= '|' & $sAddFullPath & $sSubDir & $sFile $iFileCount += 1 EndIf EndIf WEnd FileClose($hParentSearch) Local $aReturnList = StringSplit(StringTrimLeft($sFileTrack, 1), '|', $iReturnCount) If @error Then Return SetError(4, 4, '') Return $aReturnList EndFunc I'm still working on this as time goes by so the most up to date version can be found in my dropbox: http://db.tt/OqNgumLK
×
×
  • Create New...