;RescueOprphans ;By jgpaiva ;date: June 2006 ;Function: see http://www.donationcoder.com/Forums/bb/index.php?topic=4046 ;set this parameter to the name of the root directory RootFolder=D:\temp\ ;set the following parameter to false if you wouldn't like to be notified of files moved. Confirm:= true FoldersCount := false DeleteFolders := true #SingleInstance,Force #NoTrayIcon ScriptVersion := 1.01 ScriptName = RescueOrphans ScriptUrl = http://www.donationcoder.com/Forums/bb/index.php?topic=4046 ScriptSugest = Cavalcader FileInstall,Cody.png,Cody.png,1 GoSub, ReadIni GoSub, ShowGui return StartProcessing: Loop,%RootFolder%\*, 2, 0 { funct(A_LoopFileFullPath) } GuiCurrentFolder("Done!") return funct(directory) { global confirm global deletefolders global folderscount GuiCurrentFolder(directory) FileCount := 0 Loop,%Directory%\*, 2, 0 { funct(A_LoopFileFullPath) } Loop, %Directory%\*, %FoldersCount%,0 { FileCount += 1 FileName := A_LoopFileFullPath } If FileCount = 1 { SplitPath, FileName, OutFileName, OutDir, OutExtension StringGetPos, Position, OutDir, \, R, StringLeft, NewDir, OutDir, %Position% If Confirm { MsgBox,4,Move?,Move %OutFileName% from %OutDir% `nto %NewDir%? IfMsgBox No return } if OutExtension <> FileMove, %OutDir%\%OutFileName%, %NewDir%\%OutFileName%, 1 else FileMoveDir, %OUTDIR%\%outFileName%, %newDir%\%outFileName%,0 if errorlevel = 0 GuiAddFile(OutFileName,OutDir,NewDir) If DeleteFolders If Confirm { Msgbox,4,Delete?, Delete %OutDir%? IfMsgBox yes { FileRemoveDir, %OutDir% GuiAddFolder(outdir) } } } } ;***********************************************************************Gui ShowGui: Gui, add, tab,w420 h420,Main|About||Settings ;*****************About Gui,tab,About IfExist, %Scriptname%.ico Gui, add, Picture, x15, y25,%Scriptname%.ico else IfExist %Scriptname%.exe Gui, add, picture, x15, y35, %Scriptname%.exe Gui, font, bold s10 Gui, add, text, x65 y45, %Scriptname% v%ScriptVersion% by jgpaiva`n Gui, Font, Gui, Font, s10 Gui, Add ,Text,x15 y95 w410 ,This is a small script for those that tend to have very disorganized directories. RescueOrphans will scan those directories and look for folders with ony one file. When it finds those, it moves them to their parent directory. Gui, Add ,Text,X15 Y220,It was suggested by %ScriptSugest% at DonationCoder.com forums, `nin the following thread: Gui, Font,CBlue Underline Gui, Add ,Text,X15 Y255 GPost,%ScriptUrl% Gui, Font Gui, Font, s10 Gui, Add ,Text, y280 X15,`nPlease visit us at: Gui, Font,CBlue Underline s10 Gui, Add ,Text, y313 X15 GMainSite,http://www.donationcoder.com/ Gui, Font IfExist,Cody.png Gui, Add ,Picture, Y290 X280,Cody.png Gui, Add ,Button,y350 x15 gdonateAuthor w116 h30,Donate to the &Author Gui, Font, s9 Gui, Add ,Text,y400 x15 h10,If you like this program please make a donation to help further development. ;*******************************settings If FoldersCount NotFoldersCount := False else NotFoldersCount := True Gui, tab, Settings Gui, add, Text,, Please select the folder where the script should start: Gui, add, Edit,yp+30 section vRootFolder w150,%RootFolder% Gui, add, Button, gBrowse ys,Browse Gui, add, Checkbox, vConfirm xs checked%Confirm%, Confirmation dialogs? Gui, add, Checkbox, vNotFoldersCount checked%NotFoldersCount%, If a folder has a subfolder and only one file`,`nshoud the file be moved? (checked means yes) Gui, add, Checkbox, section vDeleteFolders checked%DeleteFolders%, Delete folders? Gui, add, Button, gSettingsApply xp+150 yp+40, Apply Settings ;********************************Main Gui, tab, Main Gui, add, Text,section, Current Directory: Gui, add, Text,ys vCurrentDir R2 w250, %RootFolder% -NotStarted- Gui, add, Text,xs, Changes made: Gui, add, Button, x+270 Ys w40 h50 gStartProcessing,Go! Gui, add, ListView, xs w400 h330 grid vChangesMade, File/Folder|Action|From|To LV_ModifyCol(1, 85) LV_ModifyCol(2, 50) LV_ModifyCol(3, 130) LV_ModifyCol(4, 130) Gui,show return ;***********gui labels SettingsApply: Gui, Submit, nohide If NotFoldersCount FoldersCount := False else FoldersCount := True GoSub,WriteIni return ShowSettings: GuiControl, , RootFolder, %RootFolder% return Browse: FileSelectFolder, Input, *%RootFolder%, , Select Root Folder If (ErrorLevel != "0" OR Input = "") { gosub,ShowSettings return } RootFolder := Input GoSub, ShowSettings return Post: Run,%ScriptUrl% GoSub,GuiCLOSE return MainSite: Run,http://www.donationcoder.com/ GoSub,Guiclose return DonateSite: Run,http://www.donationcoder.com/Donate/index.html GoSub,Guiclose return DonateAuthor: Run,https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=jgpaiva`%40gmail`%2ecom&item_name`=donate`%20to`%20jgpaiva&item_number`=donationcoder`%2ecom&no_shipping=1&cn=Please`%20drop`%20me`%20a`%20line`%20`%3aD&tax`=0¤cy_code=EUR&bn=PP`%2dDonationsBF&charset=UTF`%2d8 GoSub,Guiclose return GuiClose: buttonok: gui,destroy Exitapp return ;***********************************************************************Gui Functions GuiAddFile(File,OutDir,NewDir) { global Gui,default LV_Add(vis,File,"Moved",OutDir,NewDir) return } GuiCurrentFolder(directory) { global Gui,default GuiControl,,CurrentDir,%directory% return } GuiAddFolder(Folder) { global Gui,default LV_Add(vis,Folder,"Deleted") return } ;***********************************************************************ini i/o ReadIni: IniVersion = 1 IfExist,%A_ScriptName%.ini { IniRead,IniVersion ,%A_ScriptName%.ini,IniSettings,IniVersion,1 ;If IniVersion = 1 ; { ; IniWrite,%GridOrder% ,%A_ScriptName%.ini,GridSettings,GridOrder ; IniVersion = 2 ; IniWrite,%IniVersion% ,%A_ScriptName%.ini,IniSettings,Iniversion ; } IniRead,RootFolder ,%A_ScriptName%.ini,Settings,RootFolder,Error IniRead,Confirm ,%A_ScriptName%.ini,Settings,Confirm,Error IniRead,FoldersCount ,%A_ScriptName%.ini,Settings,FoldersCount,Error IniRead,DeleteFolders ,%A_ScriptName%.ini,Settings,DeleteFolders,Error If (RootFolder= "Error" OR Confirm= "Error") { MsgBox,There was an error reading the .ini file.`nThe script will be restarted, and the ini file will be deleted. FileDelete,%A_ScriptName%.ini Reload sleep 20000 } } else GoSub,WriteIni return WriteIni: IfNotExist,%A_ScriptName%.ini FileAppend, ,%A_ScriptName%.ini IniWrite,%RootFolder%,%A_ScriptName%.ini,Settings,RootFolder IniWrite,%Confirm% ,%A_ScriptName%.ini,Settings,Confirm IniWrite,%FoldersCount%,%A_ScriptName%.ini,Settings,FoldersCount IniWrite,%DeleteFolders%,%A_ScriptName%.ini,Settings,DeleteFolders IniWrite,%IniVersion%,%A_ScriptName%.ini,IniSettings,iniversion Return