@@@ 知道文件名,获得该文件的具体路径.....

jyhy 2005-04-13 02:13:08
我用循环遍历所有文件夹及其子文件夹的方法找到了所要找的文件,可是现在我想得到该文件的具体路径,我用了GetAbsolutePathName 方法来获得具体得路径可是出错了!!!
我把我做得工程放在“My Documents\yhy\遍历循环找文件\”中,而文件是在E:\歌曲库的文件夹下,我用了GetAbsolutePathName 方法之后,显示的具体路径就为“E:\My Documents\yhy\遍历循环找文件\10042.vox”,其实文件是在“E:\歌曲库\男歌星\原唱\10025.vox”,这个问题怎么解决啊...???
怎么才能得到正确的具体路径呢?用什么方法呢?
请各位高手指教!!
...全文
118 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyhy 2005-04-13
  • 打赏
  • 举报
回复
谢谢各位的提醒!多谢!
junki 2005-04-13
  • 打赏
  • 举报
回复
也可以从"\"入手,找到最后一个

如:
"D:\Software\VB6.0\MSDN98\98VS\2052\Setup"
提取"D:\Software\VB6.0\MSDN98\98VS\2052"
jyhy 2005-04-13
  • 打赏
  • 举报
回复
请教高手,我现在想得到我找到文件的父文件夹的名称,代码和上面一样的。
我用的是GetParentFolderName方法,可是什么都找不到,请问是为什么?怎么找到父文件名呢?
谢谢各位了!!!
junki 2005-04-13
  • 打赏
  • 举报
回复
使用Dir(FileName,FileAttribute)
jyhy 2005-04-13
  • 打赏
  • 举报
回复
你的思路正确,但是具体语句写错了。其中Return objAbsPath就是错的,好像这样在JScript中有用。
mingqing 2005-04-13
  • 打赏
  • 举报
回复
Sub CheckFolder(strPath As String)
....
Static objAbsPath As String


For Each objFile In objFolder.Files
If Left(objFile.Name, 5) = "10042" Then
iCount = iCount + 1
sPath = objFile.Name
objAbsPath=objAbsPath & strPath & "?"
Debug.Print "文件具体路径:" & strPath
End If
Next objFile
....

Set objSubdirs = Nothing
Set objFolder = Nothing

Return objAbsPath

End Sub


把objAbsPath值返回后,再用spilt()按“?”给它分开,就得到了所有符合条件的目录
jyhy 2005-04-13
  • 打赏
  • 举报
回复
我把程序给大家看看,大家给我点意见啊

Option Explicit
Dim bFound As Boolean
Dim iCount As Long
Dim fso As Scripting.FileSystemObject

Private Sub Command1_Click()
Set fso = CreateObject("Scripting.FileSystemObject")

iCount = 0
CheckFolder "E:\歌曲库"
Debug.Print "查找到的文件数:" & iCount

If iCount > 0 Then
bFound = True
Else
bFound = False
End If

End Sub

Sub CheckFolder(strPath As String)
Dim objFolder As Scripting.Folder
Dim objFile As Scripting.File
Dim objSubdirs As Scripting.Folders
Dim objLoopFolder As Scripting.Folder
Dim sPath As String
Dim objAbsPath As String

Debug.Print "Checking directory" & strPath
Set objFolder = fso.GetFolder(strPath)

For Each objFile In objFolder.Files
If Left(objFile.Name, 5) = "10042" Then
iCount = iCount + 1
sPath = objFile.Name
objAbsPath = fso.GetAbsolutePathName(sPath)
Debug.Print "文件具体路径:" & objAbsPath
End If
Next objFile

Set objSubdirs = objFolder.SubFolders
For Each objLoopFolder In objSubdirs
CheckFolder objLoopFolder.Path
Next objLoopFolder

Set objSubdirs = Nothing
Set objFolder = Nothing

End Sub

mingqing 2005-04-13
  • 打赏
  • 举报
回复
那你遍历每一个目录是控件,还是自己编写的程序.自己编写的程序,肯定要知道目录名才能遍历目录
jyhy 2005-04-13
  • 打赏
  • 举报
回复
请问楼上的朋友,用什么方法保存路径呢,具体一些好吗?
mingqing 2005-04-13
  • 打赏
  • 举报
回复
你只需在每遍历一个目录之前保存一下路径就可以了吗?

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧