Vb6 如何仅获取文件名?

Vb6 如何仅获取文件名?,vb6,Vb6,使用VB6 代码 Dim posn为整数,i为整数 作为字符串的Dim fName posn=0 对于i=1到Len(flname) 如果(Mid(flname,i,1)=“\”),那么posn=i 接下来我 fName=Right(flname,Len(flname)-posn) posn=仪表(fName,“.”) 如果posn0那么 fName=左(fName,位置-1) 如果结束 GetFileName=fName 文件名:Clockings8.mis06042009 120442.fi

使用VB6

代码

Dim posn为整数,i为整数
作为字符串的Dim fName
posn=0
对于i=1到Len(flname)
如果(Mid(flname,i,1)=“\”),那么posn=i
接下来我
fName=Right(flname,Len(flname)-posn)
posn=仪表(fName,“.”)
如果posn0那么
fName=左(fName,位置-1)
如果结束
GetFileName=fName
文件名:Clockings8.mis06042009 120442.fin
但它显示的文件名是“Clockings8”。它应该显示“Clockings8.mis06042009 120442”

如何修改代码


需要vb6代码帮助

使用
脚本.FileSystemObject
组件会更简洁一些。尝试:

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

代码短停的原因是InStr从字符串的开头一直工作到结尾,并在找到匹配项时停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用instrev从字符串的末尾开始搜索。

使用
脚本.FileSystemObject
组件会更简洁一些。尝试:

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

代码短停的原因是InStr从字符串的开头一直工作到结尾,并在找到匹配项时停止。文件名“Clockings8.mis06042009 120442.fin”包含两个句点。因此,您应该使用instrev从字符串末尾开始搜索。

按照David的建议使用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)

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

按照David的建议使用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)
如果您的文件名没有扩展名,但在文件名字符串的某个位置有一个点,则此方法将返回错误结果。

还有一个扩展名,其中包括扩展名(为了避免像我这样的人搜索,他们需要一个与VB6相当的
Path.filename
),还有一个扩展名,其中包括扩展名(为了避免像我这样的人搜索,我需要一个相当于
Path.FileName
)的VB6)