要怎么移动一个文件夹包括它的所有子文件夹和所有文件,如:把C:\a移至D:\b

解决方案 »

  1.   

    以前用api写的一段代码,可以满足楼主的需要了Public Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAnyOperationsAborted As Long
        hNameMappings As Long
        lpszProgressTitle As Long
    End Type
    Private Enum FOFlags
        FOF_MULTIDESTFILES = &H1 'Destination specifies multiple files
        FOF_SILENT = &H4 'Don't display progress dialog
        FOF_RENAMEONCOLLISION = &H8 'Rename if destination already exists
        FOF_NOCONFIRMATION = &H10 'Don't prompt user
        FOF_WANTMAPPINGHANDLE = &H20 'Fill in hNameMappings member
        FOF_ALLOWUNDO = &H40 'Store undo information if possible
        FOF_FILESONLY = &H80 'On *.*, don't copy directories
        FOF_SIMPLEPROGRESS = &H100 'Don't show name of each file
        FOF_NOCONFIRMMKDIR = &H200 'Don't confirm making any needed dirs
        FOF_NOERRORUI = &H400 '不在界面中显示
    End EnumPrivate Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long'移动所有(支持隐藏或只读的目录、文件,支持通配符)
    Public Function MyMoveAll(sPath1 As String, sPath2 As String) As Boolean
    Dim SHFileOp As SHFILEOPSTRUCT
    SHFileOp.wFunc = FO_MOVE
    SHFileOp.pFrom = sPath1
    SHFileOp.pTo = sPath2
    SHFileOp.fFlags = FOF_SILENT + FOF_NOCONFIRMATION + FOF_NOERRORUI
    If SHFileOperation(SHFileOp) = 0 Then MyMoveAll = True Else MyMoveAll = False
    End Function
      

  2.   

    GetObject("", "Scripting.FileSystemObject").MoveFolder "C:\a", "D:\b"
      

  3.   

    用API比较好,喜欢用API支持2楼
    我也找了个一样的,用的时候直接执行PathOperate,Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As LongPublic Const GENERIC_ALL = &H10000000
    Public Const GENERIC_WRITE = &H40000000
    Public Const GENERIC_READ = &H80000000
    Public Const OPEN_EXISTING = 3
    Public Const OPEN_ALWAYS = 4
    Public Const CREATE_ALWAYS = 2
    Public Const FILE_ATTRIBUTE_NORMAL = &H80Public Const FO_COPY = &H2
    Public Const FO_MOVE = &H1         ‘这里是移动命令
    Public Const FO_RENAME = &H4
    Public Const FO_DELETE = &H3
    Public Const FOF_NOCONFIRMATION = &H10             '  Don't prompt the user.
    Public Const FOF_SILENT = &H4                      '  don't create progress/report
    Public Const FOF_NOERRORUI = &H400
    Public Const FOF_RENAMEONCOLLISION = &H8Public Type SHFILEOPSTRUCT
            hwnd As Long
            wFunc As Long
            pFrom As String
            pTo As String
            fFlags As Integer
            fAnyOperationsAborted As Long
            hNameMappings As Long
            lpszProgressTitle As String '  only used if FOF_SIMPLEPROGRESS
    End TypePublic Function PathOperate(ByVal FormPath As String, ByVal ToPath As String, ByVal sOrder As String) As Boolean
        Dim udtPath   As SHFILEOPSTRUCT
        udtPath.hwnd = 0
        udtPath.wFunc = sOrder
        udtPath.pFrom = FormPath
        udtPath.pTo = ToPath
        udtPath.fFlags = FOF_NOCONFIRMATION Or FOF_SILENT Or FOF_NOERRORUI Or FOF_RENAMEONCOLLISION
        PathOperate = Not CBool(SHFileOperation(udtPath))
    End Function
      

  4.   


    Shell "cmd /c xcopy/s/e C:\a D:\b"
    Shell "cmd /c rd/s/q C:\a"
      

  5.   

    shell("cmd /c move /y C:\a D:\b")