Difference between revisions of "ReNamer:Scripts:RegEx Case Convertion"
Jump to navigation
Jump to search
(Created page with 'The script compensates for the lack of ReNamer's RegEx engine to change case of captured groups of the RegEx. User needs to provide REGEX and CHANGE_CASE parameters to the script...') |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | The script compensates for the lack of ReNamer's RegEx engine to change case of captured | + | {{Up|ReNamer:Scripts}} |
+ | |||
+ | The script compensates for the lack of the ability of ReNamer's RegEx engine to change case of groups captured by RegEx. | ||
+ | |||
User needs to provide REGEX and CHANGE_CASE parameters to the script controls. The exact form of the CHANGE_CASE string is explained in the legend below the main controls. | User needs to provide REGEX and CHANGE_CASE parameters to the script controls. The exact form of the CHANGE_CASE string is explained in the legend below the main controls. | ||
== Tested == | == Tested == | ||
− | * ReNamer 5. | + | * ReNamer 5.74.4 Beta |
== Code == | == Code == | ||
Line 10: | Line 13: | ||
Author: krtek. Date: 26 July 2009. | Author: krtek. Date: 26 July 2009. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
const | const | ||
Line 18: | Line 21: | ||
CHANGE_CASE = '102'; | CHANGE_CASE = '102'; | ||
− | SKIP_EXTENTION = true; | + | SKIP_EXTENTION = true; //true or false |
CASE_SENSITIVE = False; //Should searching with regex be case sensitive? Default: False | CASE_SENSITIVE = False; //Should searching with regex be case sensitive? Default: False | ||
FULL_MATCH_CHECK = True; //Should the script warn you if regex didn't match the full filename? Default: True; | FULL_MATCH_CHECK = True; //Should the script warn you if regex didn't match the full filename? Default: True; | ||
Line 33: | Line 36: | ||
//If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex. | //If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex. | ||
//If the CHANGE_CASE string is longer, spare digits are ignored. | //If the CHANGE_CASE string is longer, spare digits are ignored. | ||
− | //eg. '102' means that first matched brackets will be uppercased, second - won't be changed and third (and every brackets after it) - lowercased. | + | //eg. '102' means that first matched brackets will be uppercased, |
+ | // second - won't be changed and third (and every brackets after it) - lowercased. | ||
Line 47: | Line 51: | ||
var | var | ||
− | Matches, SubPatterns : | + | Matches, SubPatterns : TWideStringArray; |
TempFilename, FileNameProcessedPart : WideString; | TempFilename, FileNameProcessedPart : WideString; | ||
start_pos, end_pos, i, j : Integer; | start_pos, end_pos, i, j : Integer; | ||
Initialized, TimeToExit, NotAFullMatch, CheckIfFullMatch : Boolean; | Initialized, TimeToExit, NotAFullMatch, CheckIfFullMatch : Boolean; | ||
− | + | CaseFlags : array of Integer; | |
CaseFlag : Integer; | CaseFlag : Integer; | ||
Answer : WideString; | Answer : WideString; | ||
Line 84: | Line 88: | ||
CheckIfFullMatch:=FULL_MATCH_CHECK; | CheckIfFullMatch:=FULL_MATCH_CHECK; | ||
Initialized:=true; | Initialized:=true; | ||
− | + | CaseFlags:=SetCaseFlags(CHANGE_CASE); | |
end; | end; | ||
Line 134: | Line 138: | ||
3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]); | 3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]); | ||
4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]); | 4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]); | ||
− | 5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1)); | + | 5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+ |
+ | WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1)); | ||
else | else | ||
begin | begin | ||
− | + | WideShowMessage('The value of CHANGE_CASE constant is invalid. Check legend for info.'); | |
TimeToExit:=True; | TimeToExit:=True; | ||
break; | break; | ||
Line 154: | Line 159: | ||
if CheckIfFullMatch then | if CheckIfFullMatch then | ||
begin | begin | ||
− | if not WideInputQuery('RegEx didn''t match the full filename.', 'Old filename:'+#10+FileName+#10+#10+'Proposed new filename: '+#10+TempFileName+WideExtractFileExt(FileName)+#10+#10+'What should we do?'#10+#10+'Pressing OK button = Rename that file'+#10+'Pressing Cancek button = Skip that file'+#10+'Type '''+BREAK_STRING+''' in the text field to exit the script or '''+FOR_ALL_STRING+''' if you want to continue with all the files.'+#10, Answer) then | + | if not WideInputQuery('RegEx didn''t match the full filename.', 'Old filename:'+#10+FileName+#10+#10+ |
− | + | 'Proposed new filename: '+#10+TempFileName+WideExtractFileExt(FileName)+#10+#10+ | |
+ | 'What should we do?'#10+#10+'Pressing OK button = Rename that file'+#10+ | ||
+ | 'Pressing Cancek button = Skip that file'+#10+'Type '''+BREAK_STRING+ | ||
+ | ''' in the text field to exit the script or '''+FOR_ALL_STRING+ | ||
+ | ''' if you want to continue with all the files.'+#10, Answer) then Exit | ||
else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then | else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then | ||
begin | begin | ||
Line 168: | Line 177: | ||
Answer:=STANDARD_ANSWER; | Answer:=STANDARD_ANSWER; | ||
end; | end; | ||
− | |||
if SKIP_EXTENTION then | if SKIP_EXTENTION then | ||
FileName:=TempFileName+WideExtractFileExt(FileName) | FileName:=TempFileName+WideExtractFileExt(FileName) | ||
else FileName:=TempFileName; | else FileName:=TempFileName; | ||
− | |||
end | end | ||
Line 179: | Line 186: | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
+ | == Code 2 == | ||
− | Thanks to the Stefan's involvement there exists also a version of the script that uses dialog boxes to ask user for | + | Thanks to the Stefan's involvement there exists also a version of the script that uses dialog boxes to ask user for required data so no direct changes to the script are needed. |
− | |||
− | |||
Author: krtek & Stefan. Date: 27 July 2009. | Author: krtek & Stefan. Date: 27 July 2009. | ||
− | < | + | <syntaxhighlight lang="pascal"> |
const | const | ||
Line 199: | Line 205: | ||
− | DEFAULT_REGEX = '(.+) - (.+) - (.+)'; //exchanged with | + | DEFAULT_REGEX = '(.+) - (.+) - (.+)'; //exchanged with InputQuery |
DEFAULT_CHANGE_CASE = '102'; | DEFAULT_CHANGE_CASE = '102'; | ||
Line 212: | Line 218: | ||
//If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex. | //If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex. | ||
//If the CHANGE_CASE string is longer, spare digits are ignored. | //If the CHANGE_CASE string is longer, spare digits are ignored. | ||
− | //eg. '102' means that first matched brackets will be uppercased, second - won't be changed and third (and every brackets after it) - lowercased. | + | //eg. '102' means that first matched brackets will be uppercased, |
− | + | //second - won't be changed and third (and every brackets after it) - lowercased. | |
Line 226: | Line 232: | ||
var | var | ||
− | Matches, SubPatterns : | + | Matches, SubPatterns : TWideStringArray; |
TempFilename, FileNameProcessedPart : WideString; | TempFilename, FileNameProcessedPart : WideString; | ||
start_pos, end_pos, i: Integer; | start_pos, end_pos, i: Integer; | ||
Line 271: | Line 277: | ||
ChangeCase := DEFAULT_CHANGE_CASE; | ChangeCase := DEFAULT_CHANGE_CASE; | ||
− | If not WideInputQuery(SCRIPT_NAME, 'Choose case for every single match group ( )'+#10+'of your RegEx:' +#10 + Regex +#10 +#10 + Info, ChangeCase ) then | + | If not WideInputQuery(SCRIPT_NAME, 'Choose case for every single match group ( )'+#10+ |
+ | 'of your RegEx:' +#10 + Regex +#10 +#10 + Info, ChangeCase ) then | ||
begin | begin | ||
TimeToExit := true; | TimeToExit := true; | ||
exit; | exit; | ||
end; | end; | ||
− | |||
end; | end; | ||
Line 313: | Line 319: | ||
Initialized:=true; | Initialized:=true; | ||
end; | end; | ||
− | |||
begin | begin | ||
− | |||
if not TimeToExit then | if not TimeToExit then | ||
Line 360: | Line 364: | ||
3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]); | 3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]); | ||
4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]); | 4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]); | ||
− | 5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1)); | + | 5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+ |
+ | WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1)); | ||
else | else | ||
begin | begin | ||
− | + | WideShowMessage('The value of ChangeCase parameter is invalid.' +#10+ | |
+ | 'ChangeCase string cannot contain '+inttostr(CaseFlag)+ '.'+#10+ | ||
+ | 'Check legend for info.' +#10 +#10 +'Script will be terminated.'); | ||
TimeToExit:=True; | TimeToExit:=True; | ||
break; | break; | ||
Line 374: | Line 381: | ||
if start_pos < Length(FileNameProcessedPart) then | if start_pos < Length(FileNameProcessedPart) then | ||
− | TempFilename:=TempFileName+WideCopy(FileNameProcessedPart, start_pos, Length(FileNameProcessedPart)-start_pos+1); | + | TempFilename:=TempFileName+WideCopy(FileNameProcessedPart, |
+ | start_pos, Length(FileNameProcessedPart)-start_pos+1); | ||
Line 380: | Line 388: | ||
if CheckIfFullMatch then | if CheckIfFullMatch then | ||
begin | begin | ||
− | if not WideInputQuery('RegEx didn''t match the full filename.', 'Old filename:'+#10+FileName+#10+#10+'Proposed new filename: '+#10+TempFileName+WideExtractFileExt(FileName)+#10+#10+'What should we do?'#10+#10+'Pressing OK button = Rename that file'+#10+'Pressing Cancek button = Skip that file'+#10+'Type '''+BREAK_STRING+''' in the text field to exit the script or '''+FOR_ALL_STRING+''' if you want to continue with all the files.'+#10, Answer) then | + | if not WideInputQuery('RegEx didn''t match the full filename.', |
− | + | 'Old filename:'+#10+FileName+#10+#10+'Proposed new filename: '+#10+ | |
+ | TempFileName+WideExtractFileExt(FileName)+#10+#10+'What should we do?'#10+#10+ | ||
+ | 'Pressing OK button = Rename that file'+#10+'Pressing Cancek button = Skip that file'+#10+ | ||
+ | 'Type '''+BREAK_STRING+''' in the text field to exit the script or '''+FOR_ALL_STRING+ | ||
+ | ''' if you want to continue with all the files.'+#10, Answer) then Exit | ||
else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then | else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then | ||
begin | begin | ||
Line 395: | Line 407: | ||
end; | end; | ||
− | |||
if SKIP_EXTENTION then | if SKIP_EXTENTION then | ||
FileName:=TempFileName+WideExtractFileExt(FileName) | FileName:=TempFileName+WideExtractFileExt(FileName) | ||
else FileName:=TempFileName; | else FileName:=TempFileName; | ||
− | |||
end | end | ||
Line 405: | Line 415: | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
Latest revision as of 15:03, 8 February 2017
The script compensates for the lack of the ability of ReNamer's RegEx engine to change case of groups captured by RegEx.
User needs to provide REGEX and CHANGE_CASE parameters to the script controls. The exact form of the CHANGE_CASE string is explained in the legend below the main controls.
Tested
- ReNamer 5.74.4 Beta
Code
Author: krtek. Date: 26 July 2009.
const
//SCRIPT CONTROLS:
REGEX = '(.+) - (.+) - (.+)';
CHANGE_CASE = '102';
SKIP_EXTENTION = true; //true or false
CASE_SENSITIVE = False; //Should searching with regex be case sensitive? Default: False
FULL_MATCH_CHECK = True; //Should the script warn you if regex didn't match the full filename? Default: True;
//Legend for CHANGE_CASE parameter:
//1. Capitalize Every Word
//2. lowercase
//3. UPPERCASE
//4. iNVERT cASE
//5. First letter capital
//0. No changes
//You may specify case for every capturing group (brackets) in regex as a string of appropriate digits.
//If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex.
//If the CHANGE_CASE string is longer, spare digits are ignored.
//eg. '102' means that first matched brackets will be uppercased,
// second - won't be changed and third (and every brackets after it) - lowercased.
//END OF SCRIPT CONTROLS
BREAK_STRING = 'BREAK';
FOR_ALL_STRING = 'DO NOT ASK';
STANDARD_ANSWER = BREAK_STRING+' to exit, '+FOR_ALL_STRING+' to continue';
var
Matches, SubPatterns : TWideStringArray;
TempFilename, FileNameProcessedPart : WideString;
start_pos, end_pos, i, j : Integer;
Initialized, TimeToExit, NotAFullMatch, CheckIfFullMatch : Boolean;
CaseFlags : array of Integer;
CaseFlag : Integer;
Answer : WideString;
function SetCaseFlags(s : WideString) : array of Integer;
var
i : Integer;
LoopEnd : Integer;
CaseIDs : array of Integer;
begin
SetLength(CaseIDs,Length(s));
LoopEnd:=Length(s)-1;
for i:=0 to LoopEnd do
begin
CaseIDs[i]:= StrToInt(WideCopy(s,1,1));
s:=WideCopy(s,2,Length(s)-1);
end;
result:= CaseIDs;
end;
procedure Initialize;
begin
Answer:=STANDARD_ANSWER;
CheckIfFullMatch:=FULL_MATCH_CHECK;
Initialized:=true;
CaseFlags:=SetCaseFlags(CHANGE_CASE);
end;
begin
if not TimeToExit then
begin
if not Initialized then Initialize;
TempFilename:='';
end_pos:=0;
start_pos:=1;
SetLength(SubPatterns,0);
SetLength(Matches,0);
NotAFullMatch:=false;
if SKIP_EXTENTION then
FileNameProcessedPart:=WideStripExtension(FileName)
else
FileNameProcessedPart:=FileName;
Matches:=MatchesRegEx(FileNameProcessedPart, REGEX, CASE_SENSITIVE);
if Length(Matches) <= 0 then exit;
if Matches[0] <> FileNameProcessedPart then NotAFullMatch:=true;
SubPatterns:=SubMatchesRegEx(Matches[0],REGEX,CASE_SENSITIVE);
if Length(SubPatterns) <=0 then exit;
for i:=0 to Length(SubPatterns)-1 do
if SubPatterns[i]<>'' then
begin
end_pos:=WidePos(SubPatterns[i], Matches[0])-1;
TempFileName:=TempFileName+WideCopy(Matches[0], start_pos, end_pos-start_pos+1);
start_pos:=end_pos+Length(SubPatterns[i])+1;
if i < length(CaseFlags) then
CaseFlag:=CaseFlags[i]
else
CaseFlag:=CaseFlags[Length(CaseFlags)-1];
case CaseFlag of
0 : TempFilename:=TempFileName+SubPatterns[i];
1 : TempFilename:=TempFileName+WideCaseCapitalize(SubPatterns[i]);
2 : TempFilename:=TempFileName+WideLowerCase(SubPatterns[i]);
3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]);
4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]);
5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+
WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1));
else
begin
WideShowMessage('The value of CHANGE_CASE constant is invalid. Check legend for info.');
TimeToExit:=True;
break;
end;
end;
end;
if start_pos < Length(FileNameProcessedPart) then
TempFilename:=TempFileName+WideCopy(FileNameProcessedPart, start_pos, Length(FileNameProcessedPart)-start_pos+1);
if NotAFullMatch then
if CheckIfFullMatch then
begin
if not WideInputQuery('RegEx didn''t match the full filename.', 'Old filename:'+#10+FileName+#10+#10+
'Proposed new filename: '+#10+TempFileName+WideExtractFileExt(FileName)+#10+#10+
'What should we do?'#10+#10+'Pressing OK button = Rename that file'+#10+
'Pressing Cancek button = Skip that file'+#10+'Type '''+BREAK_STRING+
''' in the text field to exit the script or '''+FOR_ALL_STRING+
''' if you want to continue with all the files.'+#10, Answer) then Exit
else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then
begin
TimeToExit:=True;
exit;
end
else if WideSameText(WideLowerCase(Answer),FOR_ALL_STRING) then
begin
CheckIfFullMatch:=False;
end
else
Answer:=STANDARD_ANSWER;
end;
if SKIP_EXTENTION then
FileName:=TempFileName+WideExtractFileExt(FileName)
else FileName:=TempFileName;
end
else exit;
end.
Code 2
Thanks to the Stefan's involvement there exists also a version of the script that uses dialog boxes to ask user for required data so no direct changes to the script are needed.
Author: krtek & Stefan. Date: 27 July 2009.
const
//SCRIPT CONTROLS:
SKIP_EXTENTION = true; //true or false
CASE_SENSITIVE = False; //Should searching with regex be case sensitive? Default: False
FULL_MATCH_CHECK = True; //Should the script warn you if regex didn't match the full filename? Default: True;
DEFAULT_REGEX = '(.+) - (.+) - (.+)'; //exchanged with InputQuery
DEFAULT_CHANGE_CASE = '102';
//Legend for CHANGE_CASE parameter:
//0. No changes
//1. Capitalize Every Word
//2. lowercase
//3. UPPERCASE
//4. iNVERT cASE
//5. First letter capital
//You may specify case for every capturing group (brackets) in regex as a string of appropriate digits.
//If the CHANGE_CASE string is shorten then number of capturing groups then the last digit is used till the end of regex.
//If the CHANGE_CASE string is longer, spare digits are ignored.
//eg. '102' means that first matched brackets will be uppercased,
//second - won't be changed and third (and every brackets after it) - lowercased.
//END OF SCRIPT CONTROLS
BREAK_STRING = 'BREAK';
FOR_ALL_STRING = 'DO NOT ASK';
STANDARD_ANSWER = BREAK_STRING+' to exit, '+FOR_ALL_STRING+' to continue';
SCRIPT_NAME = 'krtek''s CaseChanger';
var
Matches, SubPatterns : TWideStringArray;
TempFilename, FileNameProcessedPart : WideString;
start_pos, end_pos, i: Integer;
Initialized, TimeToExit, NotAFullMatch, CheckIfFullMatch : Boolean;
CaseFlags : array of Integer;
CaseFlag : Integer;
Answer, Regex, ChangeCase, Info : WideString;
function BoolToStr(condition : boolean) : WideString;
begin
If condition Then
result := 'True'
Else
result := 'False';
end;
procedure procGetUserInput;
begin
Info := Info + #10 + 'Note: check script source for this settings:' +#10
Info := Info + 'SKIP_EXTENTION: ' + #9 + BoolToStr(SKIP_EXTENTION) +#10
Info := Info + 'CASE_SENSITIVE: ' + #9 + BoolToStr(CASE_SENSITIVE) +#10
Info := Info + 'FULL_MATCH_CHECK: ' + #9 + BoolToStr(FULL_MATCH_CHECK) +#10
Regex:=DEFAULT_REGEX;
If not WideInputQuery(SCRIPT_NAME, 'Match this RegEx on file name:' +#10 +Info, Regex) then
begin
TimeToExit := true;
exit;
end;
Info := '0. No changes' +#10
Info := Info + '1. Capitalize Every Word' +#10
Info := Info + '2. lowercase' +#10
Info := Info + '3. UPPERCASE' +#10
Info := Info + '4. iNVERT cASE' +#10
Info := Info + '5. First letter capital' +#10 +#10
Info := Info + 'F.ex.:' +#9 + 'use case type 1 for first match ( ),' +#10 +#9
Info := Info + '0 for second and 3 for third' +#10 +#9 + '=> 103' +#10 +#10
ChangeCase := DEFAULT_CHANGE_CASE;
If not WideInputQuery(SCRIPT_NAME, 'Choose case for every single match group ( )'+#10+
'of your RegEx:' +#10 + Regex +#10 +#10 + Info, ChangeCase ) then
begin
TimeToExit := true;
exit;
end;
end;
function SetCaseFlags(s : WideString) : array of Integer;
var
i : Integer;
LoopEnd : Integer;
CaseIDs : array of Integer;
begin
SetLength(CaseIDs,Length(s));
LoopEnd:=Length(s)-1;
for i:=0 to LoopEnd do
begin
CaseIDs[i]:= StrToInt(WideCopy(s,1,1));
s:=WideCopy(s,2,Length(s)-1);
end;
result:= CaseIDs;
end;
procedure Initialize;
begin
Answer:=STANDARD_ANSWER;
CheckIfFullMatch:=FULL_MATCH_CHECK;
FilePath := 'not used'; //just to shut up the compiler
procGetUserInput;
CaseFlags:=SetCaseFlags(ChangeCase);
Initialized:=true;
end;
begin
if not TimeToExit then
begin
if not Initialized then Initialize;
TempFilename:='';
end_pos:=0;
start_pos:=1;
SetLength(SubPatterns,0);
SetLength(Matches,0);
NotAFullMatch:=false;
if SKIP_EXTENTION then
FileNameProcessedPart:=WideStripExtension(FileName)
else
FileNameProcessedPart:=FileName;
Matches:=MatchesRegEx(FileNameProcessedPart, Regex, CASE_SENSITIVE);
if Length(Matches) <= 0 then exit;
if Matches[0] <> FileNameProcessedPart then NotAFullMatch:=true;
SubPatterns:=SubMatchesRegEx(Matches[0],Regex,CASE_SENSITIVE);
if Length(SubPatterns) <=0 then exit;
for i:=0 to Length(SubPatterns)-1 do
if SubPatterns[i]<>'' then
begin
end_pos:=WidePos(SubPatterns[i], Matches[0])-1;
TempFileName:=TempFileName+WideCopy(Matches[0], start_pos, end_pos-start_pos+1);
start_pos:=end_pos+Length(SubPatterns[i])+1;
if i < length(CaseFlags) then
CaseFlag:=CaseFlags[i]
else
CaseFlag:=CaseFlags[Length(CaseFlags) -1];
case CaseFlag of
0 : TempFilename:=TempFileName+SubPatterns[i];
1 : TempFilename:=TempFileName+WideCaseCapitalize(SubPatterns[i]);
2 : TempFilename:=TempFileName+WideLowerCase(SubPatterns[i]);
3 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i]);
4 : TempFilename:=TempFileName+WideCaseInvert(SubPatterns[i]);
5 : TempFilename:=TempFileName+WideUpperCase(SubPatterns[i][1])+
WideLowerCase(WideCopy(SubPatterns[i], 2, Length(SubPatterns[i])-1));
else
begin
WideShowMessage('The value of ChangeCase parameter is invalid.' +#10+
'ChangeCase string cannot contain '+inttostr(CaseFlag)+ '.'+#10+
'Check legend for info.' +#10 +#10 +'Script will be terminated.');
TimeToExit:=True;
break;
end;
end;
end;
if start_pos < Length(FileNameProcessedPart) then
TempFilename:=TempFileName+WideCopy(FileNameProcessedPart,
start_pos, Length(FileNameProcessedPart)-start_pos+1);
if NotAFullMatch then
if CheckIfFullMatch then
begin
if not WideInputQuery('RegEx didn''t match the full filename.',
'Old filename:'+#10+FileName+#10+#10+'Proposed new filename: '+#10+
TempFileName+WideExtractFileExt(FileName)+#10+#10+'What should we do?'#10+#10+
'Pressing OK button = Rename that file'+#10+'Pressing Cancek button = Skip that file'+#10+
'Type '''+BREAK_STRING+''' in the text field to exit the script or '''+FOR_ALL_STRING+
''' if you want to continue with all the files.'+#10, Answer) then Exit
else if WideSameText(WideLowerCase(Answer),BREAK_STRING) then
begin
TimeToExit:=True;
exit;
end
else if WideSameText(WideLowerCase(Answer),FOR_ALL_STRING) then
begin
CheckIfFullMatch:=False;
end
else
Answer:=STANDARD_ANSWER;
end;
if SKIP_EXTENTION then
FileName:=TempFileName+WideExtractFileExt(FileName)
else FileName:=TempFileName;
end
else exit;
end.