;Usage /file.organizer source folder or $file.organizer(source folder)
; Use /.file.organizer or $file.organizer to suppress outputs
; Returned values = -1 : invalid source directory
; 0+ : processed files (does not always mean this many files were moved (see note below))
;
; NB: Due to attempts to create folders when files of the same name already exist and/or attempts to move(rename) files when the same file name
; already exists not all files well always be moved. This problem is unavoidable but should represent less than 2% of all files proccessed.
;
alias file.organizer {
if (!$isdir($1-) || ($mircdir == $1-)) { if ((!$isid) && ($show)) { echo -sce info * Invalid folder specified for /file.organizer $1- * } | return -1 }
var %show = $iif((!$isid && $show),$true,$false), %sourcefolder = $1-, %proccessed = $findfile($1-,*.*,0,1,!.echo -q $subfolder.a.file(%show,%sourcefolder,$nopath($1-)))
if ((!$isid) && ($show)) { echo -sce info * /file.organizer processed %proccessed file(s) in $1- * } | return %proccessed
}
;
alias -l subfolder.a.file {
var %foldername = $iif(($pos($3,.,0)),$left($3,$calc($pos($3,.,$v1) - 1)),$3)
!.echo -q $regsub(%foldername,/[^[:alpha:]]+/g,/,%foldername)
if ($numtok(%foldername,47) > 1) { var %foldername = $deltok(%foldername,-1,47) } | else { var %foldername = $gettok(%foldername,1-,47) }
var %m = $numtok(%foldername,47), %i = 1
while (%i <= %m) { mkdir $+(",$2,/,$gettok(%foldername,$+(1-,%i),47),") | inc %i }
if $isdir($+($2,/,%foldername)) { $+($iif(!$1,.),rename) $+(",$2,/,$3,") $+(",$2,/,%foldername,/,$3,") }
:error | reseterror
}