2009-08-21 75 views
2

我想創建一個完整的路徑目錄,如「C:\ temp1 \ temp2 \ temp2」,而不必爲每個目錄製作多個「MakeDir」。 這可能嗎?VB6 - 可以創建完整路徑目錄嗎?

有沒有我可以添加到我的項目中有這種功能的任何參考?

感謝

回答

3

您可以使用這些功能,使任務更容易一些:

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' 

我不知道在那裏我得到這個代碼。

+0

我稍微編輯了代碼以使語法高亮正常工作。 – 2009-08-22 03:50:18

1
'//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 
1

私人聲明函數庫MakeSureDirectoryPathExists 「IMAGEHLP.DLL」(BYVAL lpPath作爲字符串),只要

Dim mF As String 

mF = FolderPath 

If Right(mF, 1) <> "\" Then mF = mF & "\" 

MakeSureDirectoryPathExistsμF的