You are not logged in.
Hi there people!
It passed some time...but here I am
Let me explain my problem by showing some examples that are added in file table:
(C 0909-1)P1 010,015.pdf ------------> (C 0909-1)P1 010,015.pdf
(C 0909-1)P2.pdf ------------> (C 0909-1)P2 010,015.pdf
UvKO(T 0906-3)P1 070,071,072,073.jpg ------------> UvKO(T 0906-3)P1 070,071,072,073.jpg
UvKO(T 0906-3)P2.jpg ------------> UvKO(T 0906-3)P2 070,071,072,073.jpg
UvKV(C 0908-6)P1 471FL, 471,472.jpg ------------> UvKV(C 0908-6)P1 471FL, 471,472.jpg
UvKV(C 0908-6)P2.jpg ------------> UvKV(C 0908-6)P2 471FL, 471,472.jpg
I want to add missing characters, in this case digits of corresponding filename, after P2 part. Those files are in same path, occurring various extensions. Any clues?
TRUTH, FREEDOM, JUSTICE and FATHERLAND are the highest morale values which human is born, lives and dies for!
Offline
Love a good programming challenge!
The script below will compare each filename with the previous filename and will fill the missing part if both names share a significant portion of the name, as defined by minimum similarity requirements (SimilarityRatio and SimilarityMinChars constants).
Input:
(C 0909-1)P1 010,015.pdf
(C 0909-1)P2.pdf
UvKO(T 0906-3)P1 070,071,072,073.jpg
UvKO(T 0906-3)P2.jpg
UvKV(C 0908-6)P1 471FL, 471,472.jpg
UvKV(C 0908-6)P2.jpg
Output:
(C 0909-1)P1 010,015.pdf
(C 0909-1)P2 010,015.pdf
UvKO(T 0906-3)P1 070,071,072,073.jpg
UvKO(T 0906-3)P2 070,071,072,073.jpg
UvKV(C 0908-6)P1 471FL, 471,472.jpg
UvKV(C 0908-6)P2 471FL, 471,472.jpg
Script:
const
SimilarityRatio = 0.50; // at least 50% of same characters
SimilarityMinChars = 3; // at least 3 same characters
function CountSameCharsFromStart(A, B: WideString): Integer;
var
I, Count: Integer;
begin
A := WideUpperCase(A);
B := WideUpperCase(B);
Result := 0;
if Length(A) < Length(B) then
Count := Length(A)
else
Count := Length(B);
for I := 1 to Count do
if A[I] = B[I] then
Inc(Result)
else
Exit;
end;
function FillFromPreviousName(const PreviousName, CurrentName: WideString): WideString;
var
CountSameChars: Integer;
CountSameRatio: Double;
begin
Result := CurrentName;
if Length(PreviousName) > 0 then
begin
CountSameChars := CountSameCharsFromStart(CurrentName, PreviousName);
if CountSameChars > 0 then
begin
CountSameRatio := 1.0 * CountSameChars / Length(CurrentName);
if (CountSameRatio >= SimilarityRatio) and (CountSameChars >= SimilarityMinChars) then
Result := CurrentName + Copy(PreviousName, Length(CurrentName) + 1,
Length(PreviousName) - Length(CurrentName));
end;
end;
end;
var
PreviousName, CurrentName: WideString;
begin
CurrentName := WideExtractBaseName(FileName);
FileName := FillFromPreviousName(PreviousName, CurrentName) + WideExtractFileExt(FileName);
PreviousName := CurrentName;
end.
Offline
Wow you made it possible! Thank you, Denis
Note: There were some undesired matches on already renamed files, but script do the job on rest of missing parts. That is because of "minimum similarity requirements".
Input:
(C 0906-1)P1 151,161-152,162.pdf
(C 0906-1)P2 151,161-152,162.pdf
(C 0906-2)P1 154.pdf
(C 0906-2)P2 154.pdf
Output:
(C 0906-1)P1 151,161-152,162.pdf
(C 0906-1)P2 151,161-152,162.pdf
(C 0906-2)P1 154,161-152,162.pdf
(C 0906-2)P2 154.pdf
Input:
(C 0906-1)P1 151,161-152,162.pdf
(C 0906-1)P2 151,161-152,162.pdf
(C 0906-2)P1 154.pdf
(C 0906-2)P2 154.pdf
Output:
(C 0906-1)P1 151,161-152,162.pdf
(C 0906-1)P2 151,161-152,162.pdf
(C 0906-2)P1 154,161-152,162.pdf
(C 0906-2)P2 154.pdf
Last edited by eR@SeR (2015-08-31 07:31)
TRUTH, FREEDOM, JUSTICE and FATHERLAND are the highest morale values which human is born, lives and dies for!
Offline