A.D.TEJPAL
adtp at hotmail.com
Thu Feb 8 05:52:59 CST 2007
Darren,
Sample subroutine P_AddPrefixSuffixToFileNames() as given below, will insert the desired prefix and / or suffix in all target files in the specified folder (including all subfolders belonging to this folder).
It is a generic procedure with recursive feature (ensuring coverage of all subfolders as well). First argument provides the path of folder containing the files in question, while next three arguments are all optional. If last argument (file extn) is missing, all files get renamed. Otherwise, only the files with specified extn get affected.
Sample call for inserting "inv103_" as prefix & "_016" as suffix in all pdf type files in the target folders, as desired by you, would be as follows:
P_AddPrefixSuffixToFileNames _
"<<MyFolderPath>>", _
"inv103_", "_016", ".pdf"
Note - If only prefix or only suffix is required, the unwanted optional argument can be omitted (If such optional argument is not the last one, corresponding place holder comma should be provided).
Best wishes,
A.D.Tejpal
---------------
Sample SubRoutine
(Insertion of Prefix & Suffix in File Names)
=====================================
Sub P_AddPrefixSuffixToFileNames( _
ByVal FolderPath As String, _
Optional Prefix As Variant, _
Optional Suffix As Variant, _
Optional Extn As Variant)
' Inserts desired Prefix & Suffix in File Names
' (For all files in the target folder, including all its
' subfolders). If Extn has been specified, only
' files with this particular extn will get renamed.
On Error GoTo ErrTrap
Dim fso As FileSystemObject
Dim pfd As Folder, sfd As Folder
Dim fe As File
Dim BaseName As String, FileExtn As String
Dim Rtv As Variant, NewPath As String
Dim Pfx As String, Sfx As String, Exn As String
Dim Lpx As Long, Lsx As Long
' Translate optional arguments into strings
Pfx = IIf(IsMissing(Prefix), "", Nz(Prefix, ""))
Sfx = IIf(IsMissing(Suffix), "", Nz(Suffix, ""))
Exn = IIf(IsMissing(Extn), "", Nz(Extn, ""))
' Exit if no prefix & suffix specified
If Pfx = "" And Sfx = "" Then
GoTo ExitPoint
End If
Lpx = Len(Pfx)
Lsx = Len(Sfx)
Set fso = New FileSystemObject
Set pfd = fso.GetFolder(FolderPath)
' Provide dot at beginning of extn argument
' (if such dot is missing)
Exn = IIf(Left(Exn, 1) = ".", "", ".") & Exn
' Cycle through the files in parent folder
For Each fe In pfd.Files
Rtv = Split(fe.Name, ".")
BaseName = Rtv(0)
FileExtn = "." & Rtv(1)
' Skip Renaming if already renamed ' (A)
If (Lpx > 0 And Left(BaseName, _
Lpx) = Pfx) Or (Lsx > 0 And _
Right(BaseName, Lsx) = Sfx) Then
GoTo Skip
End If
NewPath = pfd.Path & "\" & Pfx & _
BaseName & Sfx & FileExtn
If IsMissing(Extn) Then
Name fe.Path As NewPath
Else
If FileExtn = Exn Then
Name fe.Path As NewPath
End If
End If
Skip:
Next
' Note - (A) is meant to prevent repeat action
' on same file. (In a For Each loop, an
' object's index position can get disturbed
' after renaming,, leading to repeat processing)
' Cycle through the files in all subfolders
' contained in current parent folder
If pfd.SubFolders.Count > 0 Then
For Each sfd In pfd.SubFolders
If IsMissing(Extn) Then
P_AddPrefixSuffixToFileNames sfd.Path, _
Prefix, Suffix
Else
P_AddPrefixSuffixToFileNames sfd.Path, _
Prefix, Suffix, Extn
End If
Next
End If
ExitPoint:
On Error Resume Next
Set fe = Nothing
Set sfd = Nothing
Set pfd = Nothing
Set fso = Nothing
On Error GoTo 0
Exit Sub
ErrTrap:
MsgBox Err.Number & " - " & Err.Description
Resume ExitPoint
End Sub
=====================================
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Darren DICK
Sent: Wednesday, February 07, 2007 6:30 AM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Rename files
Hi All
I have a renaming routine but can't quite work out the syntax
I have file names in a folder similar to
10.pdf
11.pdf
12.pdf
13.pdf
etc etc (All sequential)
I want to prefix each file name in the nominated folder with "inv103"
I can do this bit - no prob
But I want to insert "-016" before the .PDF bit
So final filename is like.
inv10310-016.pdf
inv10311-016.pdf
inv10312-016.pdf
inv10313-016.pdf
and so on
Any suggestions?
Many thanks in advance
Darren