如何只获取文件名?

时间:2009-09-13 07:26:26

标签: vb6

使用VB6

代码。

Dim posn As Integer, i As Integer
    Dim fName As String
    posn = 0
    For i = 1 To Len(flname)
        If (Mid(flname, i, 1) = "\") Then posn = i
    Next i
    fName = Right(flname, Len(flname) - posn)
    posn = InStr(fName, ".")
        If posn <> 0 Then
           fName = Left(fName, posn - 1)
       End If
    GetFileName = fName



FileName: Clockings8.mis06042009 120442.fin

但它显示的文件名为“Clockings8”。它应该显示“Clockings8.mis06042009 120442”

如何修改代码?

需要vb6代码帮助

2 个答案:

答案 0 :(得分:3)

使用Scripting.FileSystemObject组件有点清晰。尝试:

Dim fso as New Scripting.FileSystemObject
GetFileName = fso.GetBaseName(fname)

你的代码停顿的原因是InStr从字符串的开头到结尾,并在找到匹配的任何地方停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用InStrRev来从字符串的末尾开始搜索。

答案 1 :(得分:2)

像大卫建议的那样使用FileSystemObject的GetBaseName是一个好主意。如果你不能或不想(并且有理由你可能不想)使用FileSystemObject,那么有一个简单的解决方案:从名称中最后一个点开始的文件名字符串中删除所有字符。

这就是我的意思:

Dim fn As String
fn = "Clockings8.mis06042009 120442.fin"

Dim idx As Integer
idx = InStrRev(fn, ".")
GetFileName = Mid(fn, 1, idx - 1)

如果您的文件名没有扩展名但在文件名字符串中有一个点,则此方法将返回错误结果。