This procedure appends a sequential number to a file name in the format of "filename (n).jpg", where 'n' is the added number from 2 upwards. This is handy when e.g. copying files so that pre-existing files are not overwritten.
Code: Select all
Procedure.s AddSequentialNumber(FileName$)
Protected Directory$, Extension$, i, j, n
Directory$ = GetPathPart(FileName$)
Extension$ = GetExtensionPart(FileName$)
FileName$ = GetFilePart(FileName$, #PB_FileSystem_NoExtension)
If Len(FileName$) > 4
For i = Len(FileName$) To 1 Step -1
If Mid(FileName$, i, 1) = "("
For j = i To Len(FileName$)
If Mid(FileName$, j, 1) = ")"
n = Val(Mid(FileName$, i + 1, j - i - 1))
If n
FileName$ = RemoveString(FileName$, Mid(FileName$, i, j - i + 1), #PB_String_NoCase, i, 1)
Break 2
EndIf
EndIf
Next
EndIf
Next
EndIf
If n
FileName$ = InsertString(FileName$, "(" + Str(n + 1) + ")", i)
Else
FileName$ = FileName$ + " (2)"
EndIf
FileName$ = Directory$ + FileName$
If Extension$
FileName$ + "." + Extension$
EndIf
If FileSize(FileName$) >= 0 ; Checks existence of file
FileName$ = AddSequentialNumber(FileName$)
EndIf
ProcedureReturn FileName$
EndProcedure
;- Test code below
FileName$ = OpenFileRequester("Select a file", "", "", 0)
For i = 1 To 10
CopyFile(FileName$, AddSequentialNumber(FileName$))
Next
Francis