#1 2019-07-04 14:59

jfirmo
Member
Registered: 2019-07-03
Posts: 3

Serial Number

Hello,

I'm using the increment serial number to rename the files. It's ok.

My problem is:
If my destination folder already has some files with serialized numbers, Is it possible to start automatically the serial number with the next number?

If someone can help me, I'm very thankful for it.

Thank you

Offline

#2 2019-07-04 15:27

den4b
Administrator
From: den4b.com
Registered: 2006-04-06
Posts: 2,764

Re: Serial Number

There are a couple of options, but you haven't provided a bare minimum example to help figure out what might work.

Generally speaking...

Option 1: Add all files, already serialized and not yet serialized files, re-serialize all files.

Option 2: Use Pascal Script rule to automatically figure out the last serial number used and use it for further serialization.

Offline

#3 2019-07-04 15:45

jfirmo
Member
Registered: 2019-07-03
Posts: 3

Re: Serial Number

Sorry, see example below:

I renamed these files:

AFK2700001.con
AFK2700002.con
AFK2700003.con

And I used these files and clean the files list in the program.

In another moment, I need to rename new files, so, I would like to start to rename serial number (automatically) from the last serial number used.

AFK2700004.con
AFK2700005.con
AFK2700006.con

Unfortunatelly, I don't know to create Pascal Script rule.

Thank you.

Offline

#4 2019-07-06 09:04

den4b
Administrator
From: den4b.com
Registered: 2006-04-06
Posts: 2,764

Re: Serial Number

The script below will find the greatest trailing serial number from files in a folder defined by Directory constant, and will use that serial number for naming the new files in ReNamer.

const
  Directory = 'C:\Temp\Serial';
  Mask = '*.*';

function ExtractTrailNumber(const Text: String): Int64;
var
  I: Integer;
  Number: String;
begin
  Number := '';
  for I := Length(Text) downto 1 do
  begin
    if Pos(Text[I], '0123456789') > 0 then
      Number := Text[I] + Number
    else
      Break;
  end;
  if Length(Number) > 0 then
    Result := StrToInt64(Number)
  else
    Result := -1;
end;

function DetermineLastSerial: Int64;
var
  I: Integer;
  Files: TWideStringArray;
  Serial: Int64;
begin
  Result := 0;
  WideScanDirForFiles(Directory, Files, False, False, False, Mask);
  for I := 0 to Length(Files) - 1 do
  begin
    Serial := ExtractTrailNumber(WideExtractBaseName(Files[I]));
    if Serial > Result then
      Result := Serial;
  end;
end;

var
  Initialized: Boolean;
  CurrentSerial: Integer;

begin
  if not Initialized then
  begin
    Initialized := True;
    CurrentSerial := DetermineLastSerial;
  end;
  CurrentSerial := CurrentSerial + 1;
  FileName := Int64ToStr(CurrentSerial) + WideExtractFileExt(FileName);
end.

Offline

#5 2019-07-10 14:38

jfirmo
Member
Registered: 2019-07-03
Posts: 3

Re: Serial Number

It worked out!
Thank you

Offline

Board footer

Powered by FluxBB