|
Title | CheckAscCounter |
File Name | CheckAscCounter.txt |
Description | Check whether files are numbered in ascending order |
Author | Vochomurka |
Parameters | ("%P", "%O", "%E") |
Plugins Called | win, file, miscplugin, clip |
Icon | |
Version | 1.4 |
Updated on | 18.04.2019 |
args Path, Name, Ext if(!Ext) Ext = "*" Ext = "." ++ Ext local hwnd = win.handle("c=TTOTAL_CMD") local Exepath = win.exepath(hwnd) local Len = length(Name) local mpDlgCaption = "CheckAscCounter Script" local mpIcon = "e:\Storage\Graphics\Icons\User\Incr.ico" local i, j, Char, mpDlgText, Prev, Cur local Quote = esc(?+\"+, ?+\+) local CtC = "&Copy to Clip" local Gt = "&Go to" for(i = Len; i > 0; i--) Char = Name[i - 1] if(not miscplugin.is_int(Char)) break endfor switch (i) case Len Char = "File name " ++ Name ++ Ext ++ " contains no counter" messagebox("ok error", Char, mpDlgCaption) quit case 0 Char = Name Name = "" break case else Char = Name[i, Len - 1] Name = Name[0, i - 1] endswitch local Digits = length(Char) local Total = repeat("9", Digits) for(i = eval(Char); i <= Total; i++) Len = fill(repeat("0", Digits), i) Cur = Path ++ Name ++ Len ++ Ext miscplugin.BalloonTip(1, "information", i, "timeout=5") if(!validpath(Cur)) do mpDlgText = "First missing file is '" ++ Cur ++ "'" local Ans = miscplugin.messagebox(1, Gt, CtC, "&Exit") if(Ans == Gt) do if(!Prev) do win.sendmessage(hwnd, 0x400+51, 2050, 0) else do(Exepath,"/O /S /L=" ++ Quote ++ Path ++ Prev ++ Ext ++ Quote) *keys {down} endif elseif(Ans == CtC) do clip.set(Cur) endif quit endif Prev = Name ++ Len endfor
How is it convenient to name files, especially if their order matters? Of course, with a counter, for example:
file-001
file-002
...
or
0001
0002
...
Therefore, all file names are ending with a certain quantity of numeric characters.
But at deleting, adding, or renaming files their numbering is disturbed. The script checks whether files are numbered sequentially, in ascending order, starting with 1. When the disturbance is found, the script allows either to go directly to the next file, or to copy the missing name to the clipboard. Before running the script the cursor should be placed on any file to be a "sample" to check others.
Why not use MultiRename Tool right away? Because the MultiRename Tool operation can take a great time for which Total Commander remains unavailable. For example, in one directory on my computer there are 24589 sequentially numbered files. If missing file has number, say, 24585, then there is no sense to rename all files.
Title | CheckDescCounter |
File Name | CheckDescCounter.txt |
Description | Check whether files are numbered in descending order |
Author | Vochomurka |
Parameters | ("%P", "%O", "%E") |
Plugins Called | win, file, miscplugin, clip |
Icon | |
Version | 1.4 |
Updated on | 18.04.2019 |
args Path, Name, Ext if(!Ext) Ext = "*" Ext = "." ++ Ext local hwnd = win.handle("c=TTOTAL_CMD") local Exepath = win.exepath(hwnd) local Len = length(Name) local mpDlgCaption = "CheckAscCounter Script" local mpIcon = "e:\Storage\Graphics\Icons\User\Incr.ico" local i, j, Char, mpDlgText, Prev, Cur local Quote = esc(?+\"+, ?+\+) local CtC = "&Copy to Clip" local Gt = "&Go to" for(i = Len; i > 0; i--) Char = Name[i - 1] if(not miscplugin.is_int(Char)) break endfor switch (i) case Len Char = "File name " ++ Name ++ Ext ++ " contains no counter" messagebox("ok error", Char, mpDlgCaption) quit case 0 Char = Name Name = "" break case else Char = Name[i, Len - 1] Name = Name[0, i - 1] endswitch local Digits = length(Char) local Total = repeat("0", Digits) for(i = eval(Char); i >= Total; i--) Len = fill(repeat("0", Digits), i) Cur = Path ++ Name ++ Len ++ Ext miscplugin.BalloonTip(1, "information", i, "timeout=5") if(!validpath(Cur)) do mpDlgText = "First missing file is '" ++ Cur ++ "'" local Ans = miscplugin.messagebox(1, Gt, CtC, "&Exit") if(Ans == Gt) do if(!Prev) do win.sendmessage(hwnd, 0x400+51, 2050, 0) else do(Exepath,"/O /S /L=" ++ Quote ++ Path ++ Prev ++ Ext ++ Quote) *keys {down} endif elseif(Ans == CtC) do clip.set(Cur) endif quit endif Prev = Name ++ Len endfor
The difference between previous script and this one is that the latter checks numbers in descending order:
...
file98
file99
or
...
9998
9999
Number consisting of nines is checked first.
Main Page | Total Commander | PowerPro |