File Renamer — File Browser
FileRenamerv1.1 / FileRenamerv1.1 / renamer.mrc
renamer.mrc — 4.33 KB — Download this file
alias -l _me return renamer
alias -l _ver return 1.1
alias __renamer return $_ver
alias renamer {
if ($dialog(renamer)) return
dialog -dm renamer renamer
}
alias -l noop return
alias -l renamer.free {
.timerrenamer* off
dialog -x renamer
}
alias -l renamer.cwd {
if (!$dialog(renamer)) return
var %d = $did(renamer,102)
did -o renamer 102 1 $$sdir($iif(%d,%d,.),Select a directory)
renamer.ls
}
alias -l renamer.ls {
if (!$dialog(renamer)) return
var %d = $did(renamer,102)
if (!%d) return
%d = $+(",%d,")
if (!$exists(%d)) return
did -r renamer 104,804
var %i 0, %n = $findfile(%d,*,0,1)
while (%i < %n) {
inc %i
did -a renamer 104 $nopath($findfile(%d,*,%i,1))
}
.timerrenamer.rsub -om 1 100 renamer.rsub
}
alias -l renamer.ren {
if (!$dialog(renamer)) return
var %i 0, %l, %m, %n = $did(renamer,104,0).sel, %p = $did(renamer,102)
%p = $+(%p,$iif($right(%p,1) == \,,\))
while (%i < %n) {
inc %i
%l = $did(renamer,104,$did(renamer,104,%i).sel)
%m = $did(renamer,804,%i)
if ($regex(%m,[\\\/\*\?:"<>])) {
echo -s renamer: the following file name contains an invalid character \/*?:"<> : %m
continue
}
rename $+(",%p,%l,") $+(",%p,%m,")
}
}
alias -l renamer.rsub {
if (!$dialog(renamer)) return
var %i 0, %j, %l, %n = $did(renamer,104,0).sel, %o = $did(renamer,210).lines, %r, %s
did -r renamer 804
while (%i < %n) {
inc %i
%l = $did(renamer,104,$did(renamer,104,%i).sel)
%j = 0
while (%j < %o) {
inc %j
%r = $+(/,$did(renamer,210,%j),/g)
%s = $replace($did(renamer,211,%j),\s,$chr(32))
noop $regsub(%l,%r,%s,%l)
while ($regex(%l,(\*([^\*]+)\*))) {
%l = $replace(%l,$regml(1),[ $ $+ [ $regml(2) ] ])
}
}
did -a renamer 804 %l
}
}
on *:dialog:renamer:edit:102:.timerrenamer.ls -om 1 100 renamer.ls
on *:dialog:renamer:sclick:103:.timerrenamer.cwd 1 0 renamer.cwd
on *:dialog:renamer:sclick:104:.timerrenamer.rsub -om 1 100 renamer.rsub
on *:dialog:renamer:sclick:205:{
if (!$len($did(203))) return
did -a renamer 210 $did(203)
did -a renamer 211 $did(204)
did -o renamer 203,204 1
.timerrenamer.rsub -om 1 100 renamer.rsub
}
on *:dialog:renamer:sclick:210,211:{
var %i = $did(renamer,$did,1).sel
if (!%i) return
did -c renamer 210,211 %i
did -o renamer 203 1 $did(renamer,210,$did(renamer,210,1).sel)
did -o renamer 204 1 $did(renamer,211,$did(renamer,211,1).sel)
}
on *:dialog:renamer:sclick:212:{
var %i = $did(renamer,210,1).sel
if (!%i) return
did -d renamer 210,211 %i
.timerrenamer.rsub -om 1 100 renamer.rsub
}
on *:dialog:renamer:sclick:220:{
var %i = $did(renamer,210,1).sel
if (!%i) return
if (%i > 1) {
did -i renamer 210 $calc(%i -1) $did(renamer,210,$did(renamer,210,1).sel)
did -i renamer 211 $calc(%i -1) $did(renamer,211,$did(renamer,211,1).sel)
did -d renamer 210,211 $calc(%i +1)
did -c renamer 210,211 $calc(%i -1)
.timerrenamer.rsub -om 1 100 renamer.rsub
}
}
on *:dialog:renamer:sclick:221:{
var %i = $did(renamer,210,1).sel
if (!%i) return
if (%i < $did(renamer,210).lines) {
did -i renamer 210 $calc(%i +2) $did(renamer,210,$did(renamer,210,1).sel)
did -i renamer 211 $calc(%i +2) $did(renamer,211,$did(renamer,211,1).sel)
did -d renamer 210,211 %i
did -c renamer 210,211 $calc(%i +1)
.timerrenamer.rsub -om 1 100 renamer.rsub
}
}
on *:dialog:renamer:sclick:991:renamer.ren
on *:dialog:renamer:sclick:998:renamer.free
on *:dialog:renamer:sclick:999:halt
dialog renamer {
title "File Renamer"
size -1 -1 640 480
text "INPUT", 100, 5 5 630 20
text "Working directory:", 101, 5 25 630 20
edit "", 102, 5 40 600 20
button "...", 103, 610 40 25 20
list 104, 5 65 630 100, extsel
text "REGSUB", 200, 5 180 630 20
text "Replace:", 201, 5 200 310 20
text "With:", 202, 320 200 310 20
edit "", 203, 5 215 310 20
edit "", 204, 320 215 280 20
button "Add", 205, 605 215 30 20
list 210, 5 240 310 90
list 211, 320 240 280 90
button "Del", 212, 605 240 30 20
button "+", 220, 605 275 30 20
button "-", 221, 605 300 30 20
text "OUTPUT", 800, 5 335 630 20
list 804, 5 355 630 100
button "rename", 991, 505 455 60 20
button "close", 998, 570 455 60 20
button "", 999, 0 0 0 0, ok
}