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
}