HOWTO: Get a Long Filename from a Short Filename

ID: Q163227


The information in this article applies to:
  • Microsoft Visual Basic Professional and Enterprise Editions for Windows, versions 5.0, 6.0
  • Microsoft Visual Basic Standard, Professional, and Enterprise Editions, 32-bit only, for Windows, version 4.0


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

  1. Start Visual Basic. Form1 is created by default.


  2. Place a CommandButton on Form1.


  3. From the Insert menu, select Module to add a single code module to the project.


  4. Add the following code to Module1:


  5. 
          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
     
  6. Add the following to the Command1_Click event:


  7. 
          Private Sub Command1_Click()
    
            'Assumes C:\Program Files\Common Files is a valid path
            Print GetLongFilename("C:\PROGRA~1\COMMON~1")
    
          End Sub
     
  8. Choose Start from the Run menu, or press the F5 key to start.


  9. Click the CommandButton.


  10. 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.


REFERENCES

Microsoft Visual Basic Online Help

Additional query words:

Keywords : KbVBA kbVBp kbVBp500 kbVBp600 kbGrpVB kbDSupport kbVBA500
Version : WINDOWS:4.0,5.0,6.0
Platform : WINDOWS
Issue type : kbhowto


Last Reviewed: July 15, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.