Microsoft KB Archive/163227

= How To Get a Long Filename from a Short Filename =

Article ID: 163227

Article Last Modified on 2/10/2005

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition
 * Microsoft Visual Basic 4.0 Standard Edition
 * Microsoft Visual Basic 4.0 Professional Edition
 * Microsoft Visual Basic 4.0 32-Bit Enterprise Edition

-



This article was previously published under Q163227



SUMMARY
The Dir function can be used to return a long filename but it does not include path information. By parsing a given short path/filename into its constituent directories, you can use the Dir function to build a long path/filename. This article demonstrates how to accomplish this behavior.



MORE INFORMATION
The following code example includes a function that converts short filenames into their long filename equivalents and also includes a simple demonstration of the function's use.

Step-by-Step Example
 Start Visual Basic. Form1 is created by default. Place a CommandButton on Form1. From the Insert menu, select Module to add a single code module to the project.  Add the following code to Module1: Public Function GetLongFilename _ (ByVal sShortName As String) _ As String

Dim sLongName As String Dim sTemp As String Dim iSlashPos As Integer

'Add \ to short name to prevent Instr from failing sShortName = sShortName & "\"

'Start from 4 to ignore the "[Drive Letter]:\" characters iSlashPos = InStr(4, sShortName, "\")

'Pull out each string between \ character for conversion While iSlashPos sTemp = Dir(Left$(sShortName, iSlashPos - 1), _           vbNormal + vbHidden +    vbSystem + vbDirectory) If sTemp = "" Then 'Error 52 - Bad File Name or Number GetLongFilename = "" Exit Function End If         sLongName = sLongName & "\" & sTemp iSlashPos = InStr(iSlashPos + 1, sShortName, "\") Wend

'Prefix with the drive letter GetLongFilename = Left$(sShortName, 2) & sLongName

End Function

  Add the following to the Command1_Click event: Private Sub Command1_Click

'Assumes C:\Program Files\Common Files is a valid path Print GetLongFilename("C:\PROGRA~1\COMMON~1")

End Sub

 Choose Start from the Run menu, or press the F5 key to start. Click the CommandButton. If the path you have supplied is valid, the long equivalent will be printed on the form. If it is not valid, nothing will print, in which case you will need to supply a valid short filename in the Command1_Click event code.</li></ol>

<div class="references_section">