I had to create a variable %item-md5% to work on files MD5, but I met some concerns of replacement: nothing crossed it.
As a result, I modified the procedure handleSymbols() by adding her one or two rules more
1) It is possible to use numeric symbols in the names as %var5max21%
2) the name must begin by an only one '_' or by letters 'a'..'z' and 'A'..'Z'
With the compulsory rule that the first char '_' must be followed necessarily by a letter
are accepted
%symbol1% , %_symbol2% , %folder% but ar forbidden
%5mars% or %_45_test% procedure handleSymbols();
var
b, e, l : integer;
s, newS: string;
begin
e:=0;
l:=length(txt);
while e < l do
begin
// search for next symbol
b:=posEx('%',txt,e+1);
if b = 0 then break;
e:=b+1;
if txt[e]='_' then inc(e); //first char can be a '_' but necessary with a letter after
if not (txt[e] in ['a'..'z','A'..'Z']) then continue; // assume that the first char is a letter
while (e < l) and (txt[e] in ['0'..'9','a'..'z','A'..'Z','-','_']) do //accept numeric char
inc(e);
if txt[e] <> '%' then continue;