asgarcymed Posted October 1, 2007 Share Posted October 1, 2007 I need a Script to automate file moving, first according to its size, and thereafter according to its extension... I am an absolute beginner about Programming in General and I am starting to learn programming by learning AutoIt (which seems to be superb!! - easy to learn, yet very powerful!!)... First, I need a script to automate file moving according to its size. Inside a directory I have many files with different sizes. I need to automate the following actions: 1) Create "Big", "Medium", "Small" directories (such as DOS' «md Big», «md Medium», «md Small») 2) Get file sizes 3) IF size<= 80 MB THEN move files to "Small" directory IF 81<size< 170 MB THEN move files to "Medium" directory IF size>=171 MB THEN move files to "Big" directory I could make the following script "Move by Size.au3": $input_path = InputBox ("Path...", "What is the target path?" & Chr(13) & "Example:" & Chr(13) & "C:\Directory", "", "", 250, 150) $search = FileFindFirstFile ($input_path & "\" & "*.*") While 1 $file = FileFindNextFile ($search) $size_bytes = FileGetSize ($input_path & "\" & $file) $size_megas = $size_bytes / 1048576 Select Case $file = "" MsgBox (0, "Finished!", "The files were moved; now exiting!") ExitLoop Case $size_megas > 0 And $size_megas <= 80 FileMove ($input_path & "\" & $file, $input_path & "\Small\", 8) Case $size_megas > 80 And $size_megas <= 170 FileMove ($input_path & "\" & $file, $input_path & "\Medium\", 8) Case $size_megas > 170 FileMove ($input_path & "\" & $file, $input_path & "\Big\", 8) EndSelect WEnd Exit This script worked fine, but maybe it is not the most correct.... Is it?... Next step - make another script to automate file moving according to its extension. Inside a directory I have many files with different extensions. I need to automate the following actions: 1) Get all different files' extensions inside a directory (example: .pdf / .doc / .abw / .rtf) 2) Create a directory for each extension with extension's name (example, like DOS Batch (.BAT) files: md pdf md doc md abw md rtf) 3) Move each file to inside the folder with its extension (example, like DOS Batch (.BAT) files: (move *.pdf pdf\ move *.doc doc\ move *.abw abw\ move *.rtf rtf\) Note - I assume that all files have am extension which corresponds to the 3 last right characters of their name -- StringRight ("name.ext", 3) I could make the following script "Move by Extension.au3": $input_path = InputBox ("Path...", "What is the target path?" & Chr(13) & "Example:" & Chr(13) & "C:\Directory", "", "", 250, 150) $search = FileFindFirstFile ($input_path & "\" & "*.*") While $search = 1 $file = FileFindNextFile ($search) $extension = StringRight ($input_path & "\" & $file, 3) If $file = "" Then MsgBox (0, "Finished!", "The files were moved; now exiting!") Exit Else FileMove ($input_path & "\" & $file, $input_path & "\" & $extension & "\", 8) EndIf WEnd This script worked fine, but maybe it is not the most correct.... Is it?... Now the big problem - I tried to make an one-only Script <=> {1= "Move by Size.au3" + 2= "Move by Extension.au3" = "Move by Size and Thereafter by Extension. Such would make first the file moving according to its size, and thereafter according to extension)... \Small\doc\ \Small\pdf\ \Small\zip\ \Medium\doc\ \Medium\pdf\ \Medium\zip\ \Big\doc\ \Big\pdf\ \Big\zip\ I made many attempts/trials but it did not work; I tried many things; I feel confused and lost... Please help me!... Thanks in advance. Best regards. MLMK - my blogging craziness... Link to comment Share on other sites More sharing options...
BrettF Posted October 1, 2007 Share Posted October 1, 2007 Try this: #include <Array.au3> $input_path = InputBox("Path...", "What is the target path?" & Chr(13) & "Example:" & Chr(13) & "C:\Directory", "", "", 250, 150) Dim $extent $i = 0 $search = FileFindFirstFile($input_path & "\" & "*.*") While 1 $file = FileFindNextFile($search) $size_bytes = FileGetSize($input_path & "\" & $file) $size_megas = $size_bytes / 1048576 If $file = "" Then ExitLoop $ext = StringSplit($file, ".") $extent = $ext[$ext[0]] Select Case $size_megas > 0 And $size_megas <= 80 FileMove($input_path & "\" & $file, $input_path & "\Small\" & $extent & "\", 8) Case $size_megas > 80 And $size_megas <= 170 FileMove($input_path & "\" & $file, $input_path & "\Medium\" & $extent & "\", 8) Case $size_megas > 170 FileMove($input_path & "\" & $file, $input_path & "\Big\" & $extent & "\", 8) EndSelect $i += 1 WEnd MsgBox(0, "Finished!", $i & " files were moved; now exiting!") Vist my blog!UDFs: Opens The Default Mail Client | _LoginBox | Convert Reg to AU3 | BASS.au3 (BASS.dll) (Includes various BASS Libraries) | MultiLang.au3 (Multi-Language GUIs!)Example Scripts: Computer Info Telnet Server | "Secure" HTTP Server (Based on Manadar's Server)Software: AAMP- Advanced AutoIt Media Player | WorldCam | AYTU - Youtube Uploader Tutorials: Learning to Script with AutoIt V3Projects (Hardware + AutoIt): ArduinoUseful Links: AutoIt 1-2-3 | The AutoIt Downloads Section: | SciTE4AutoIt3 Full Version! Link to comment Share on other sites More sharing options...
asgarcymed Posted October 1, 2007 Author Share Posted October 1, 2007 Absolutely perfect!!! Thank you a lot!!! MLMK - my blogging craziness... 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