VB6-是否可以创建完整路径目录?
我想创建一个完整路径目录,如“C:\temp1\temp2\temp2”,而不必为每个目录创建多个“MakeDir”。 这可能吗 是否有任何参考,我可以添加到我的项目,有这种功能VB6-是否可以创建完整路径目录?,vb6,Vb6,我想创建一个完整路径目录,如“C:\temp1\temp2\temp2”,而不必为每个目录创建多个“MakeDir”。 这可能吗 是否有任何参考,我可以添加到我的项目,有这种功能 谢谢您可以使用这些功能使任务变得更简单: Const PATH_SEPARATOR As String = "\" '"' Creates a directory and its parent directories ''' Public Sub MakeDirectoryStructure(strDir As S
谢谢您可以使用这些功能使任务变得更简单:
Const PATH_SEPARATOR As String = "\"
'"' Creates a directory and its parent directories '''
Public Sub MakeDirectoryStructure(strDir As String)
Dim sTemp As String
If Right$(strDir, 1) = PATH_SEPARATOR Then
sTemp = Left$(strDir, Len(strDir) - 1)
Else
sTemp = strDir
End If
If Dir(strDir, vbDirectory) <> "" Then
' Already exists.'
Else
'We have to create it'
On Error Resume Next
MkDir strDir
If Err > 0 Then
' Create parent subdirectory first.'
Err.Clear
'New path'
sTemp = ExtractPath(strDir)
'Recurse'
MakeDirectoryStructure sTemp
End If
MkDir strDir
End If
End Sub
Public Function ExtractPath(strPath As String) As String
ExtractPath = MiscExtractPathName(strPath, True)
End Function
Private Function MiscExtractPathName(strPath As String, ByVal bFlag) As String
'The string is treated as if it contains '
'a path and file name. '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' If bFlag = TRUE: '
' Function extracts the path from '
' the input string and returns it. '
' If bFlag = FALSE: '
' Function extracts the File name from '
' the input string and returns it. '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim lPos As Long
Dim lOldPos As Long
'Shorten the path one level'
lPos = 1
lOldPos = 1
Do
lPos = InStr(lPos, strPath, PATH_SEPARATOR)
If lPos > 0 Then
lOldPos = lPos
lPos = lPos + 1
Else
If lOldPos = 1 And Not bFlag Then
lOldPos = 0
End If
Exit Do
End If
Loop
If bFlag Then
MiscExtractPathName = Left$(strPath, lOldPos - 1)
Else
MiscExtractPathName = Mid$(strPath, lOldPos + 1)
End If
End Function ' MiscExtractPathName'
Const PATH\u分隔符为String=“\”
“'创建目录及其父目录“””
公共子MakeDirectoryStructure(strDir作为字符串)
作为字符串的Dim sTemp
如果右$(strDir,1)=路径分隔符,则
sTemp=Left$(strDir,Len(strDir)-1)
其他的
sTemp=strDir
如果结束
如果Dir(strDir,vbDirectory)“,则
“已经存在。”
其他的
“我们必须创造它”
出错时继续下一步
MkDir标准
如果错误>0,则
'首先创建父子目录。'
呃,明白了
“新路径”
sTemp=提取路径(strDir)
“递归”
MakeDirectoryStructure-sTemp
如果结束
MkDir标准
如果结束
端接头
公共函数ExtractPath(strPath作为字符串)作为字符串
ExtractPath=MiscExtractPathName(strPath,True)
端函数
私有函数MiscExtractPathName(strPath作为字符串,ByVal bFlag)作为字符串
'字符串被视为包含'
'路径和文件名。'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'如果bFlag=TRUE:'
'函数从中提取路径'
'输入字符串并返回它。'
'如果bFlag=FALSE:'
'函数从中提取文件名'
'输入字符串并返回它。'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
暗LPO与长LPO一样
暗淡的lOldPos像长的一样
“将路径缩短一级”
lPos=1
lOldPos=1
做
lPos=InStr(lPos、strPath、路径分隔符)
如果lPos>0,则
lOldPos=lPos
lPos=lPos+1
其他的
如果lOldPos=1而不是bFlag,则
lOldPos=0
如果结束
退出Do
如果结束
环
如果是,那么
MiscExtractPathName=Left$(strPath,lOldPos-1)
其他的
MiscExtractPathName=Mid$(strPath,lOldPos+1)
如果结束
结束函数“MiscExtractPathName”
我不确定我从哪里得到了这个代码。之前询问并回答过:
'//在一次调用中创建嵌套文件夹
公共函数MkDirs(ByVal PathIn作为字符串)_
作为布尔值
将NPO视为长
MkDirs=True“假设成功
如果右$(PathIn,1)“\”则PathIn=PathIn+“\”nPos=InStr(1,PathIn,“\”)
NPO>0时执行此操作
如果Dir$(Left$(PathIn,nPos),vbDirectory)=“”,则
在发生错误时,转到失败
MkDir Left$(路径输入,NPO)
错误转到0
如果结束
nPos=InStr(nPos+1,路径号“\”)
环
退出功能
失败:
MkDirs=False
端函数
私有声明函数MakeSureDirectoryPathExists Lib
“imagehlp.dll”(ByVal lpPath作为字符串)长度相同
将mF设置为字符串
mF=折叠路径
如果正确(mF,1)“\”则
mF=mF&“\”
确保DirectoryPathMF存在
如果结束
我稍微编辑了代码,以使语法突出显示正常工作。
'//Create nested folders in one call
Public Function MkDirs(ByVal PathIn As String) _
As Boolean
Dim nPos As Long
MkDirs = True 'assume success
If Right$(PathIn, 1) <> "\" Then PathIn = PathIn + "\" nPos = InStr(1, PathIn, "\")
Do While nPos > 0
If Dir$(Left$(PathIn, nPos), vbDirectory) = "" Then
On Error GoTo Failed
MkDir Left$(PathIn, nPos)
On Error GoTo 0
End If
nPos = InStr(nPos + 1, PathIn, "\")
Loop
Exit Function
Failed:
MkDirs = False
End Function
Private Declare Function MakeSureDirectoryPathExists Lib
"imagehlp.dll" (ByVal lpPath As String) As Long
Dim mF As String
mF = FolderPath
If Right(mF, 1) <> "\" Then
mF = mF & "\"
MakeSureDirectoryPathExists mF
End If