trijames Posted September 17, 2011 Share Posted September 17, 2011 (edited) Hello, I have the following directory structure: stuff\ script.au3 \dir1\ \archive1.rar \dir2\ \archive2.rar \archive2b.rar \dir3\ \archive3.zip I want to move the archives (both rar and zip) up in the directory "stuff" where also the running script is. This is the code I came up with but as I have written in the comments it can't find files and sets @error to 4 so archives are never found and moved, although it finds sub directories: #include <File.au3> $list = _FileListToArray(@ScriptDir, "*", 2) If @error Then MsgBox(16,"Error","Err "&@error) Exit EndIf For $i = 1 To $list[0] $path = @ScriptDir & "\" & $list[$i] & "\" ;MsgBox(0,"",$path) ; correctly displays the full path to the subdirectory ("C:\...\dir1\") $i_list = _FileListToArray($path, "*.ZIP;*.RAR") ;for some reason can't find files and sets @error = 4 If Not @error Then ; @error = 4 : no file(s) found ; we never get here For $j = 1 to $i_list[0] FileMove($i_list[$j], "../") Next EndIf Next AutoIt version is 3.3.6.1. Any help would be greatly appreciated. Thank you Edited September 17, 2011 by trijames Link to comment Share on other sites More sharing options...
IcemanND Posted September 17, 2011 Share Posted September 17, 2011 (edited) You can only search for one extension at a time, and it would have copied the files to the parent folder of Stuff, not to the stuff folder, so I modified the filemove destination also. I would make it a function and pass the extension you want to search for and call the function for each extension. #include <File.au3> $list = _FileListToArray(@ScriptDir, "*", 2) If @error Then MsgBox(16,"Error","Err "&@error) Exit EndIf For $i = 1 To $list[0] $path = @ScriptDir & "\" & $list[$i] & "\" $i_list = _FileListToArray($path, "*.RAR") ;for some reason can't find files and sets @error = 4 if Not @error Then ; @error = 4 : no file(s) found For $j = 1 to $i_list[0] FileMove($path & "\" & $i_list[$j], ".\") Next EndIf Next Edited September 17, 2011 by IcemanND Link to comment Share on other sites More sharing options...
trijames Posted September 17, 2011 Author Share Posted September 17, 2011 Thank you IcemanND but it didn't solve the problem. I was still getting the same result even with the changes that you have suggested. I had found the "*.RAR;*.ZIP" somewhere in the documentation and I assumed that it worked with _FileListToArray() too. Anyway I have changed something and it is working perfectly: the first parameter used in calling FileMove was wrong too and something else. I didn't feel like making a function so i declared an array of file extensions and cycle it. This is the working code if anyone cares: #include <File.au3> $list = _FileListToArray(@ScriptDir, "*", 2) If @error Then Exit EndIf Global $exts[2] = ["*.rar","*.zip"] For $x = 0 To UBound($exts)-1 $ext = $exts[$x] For $i = 1 To $list[0] $i_list = _FileListToArray(@ScriptDir & "\" & $list[$i] & "\", $ext) If Not @error Then ; @error = 4 : no file(s) found For $j = 1 to $i_list[0] FileMove($list[$i]&"\"&$i_list[$j], @ScriptDir) Next EndIf Next Next Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now