以前用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
用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
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
我也找了个一样的,用的时候直接执行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
Shell "cmd /c xcopy/s/e C:\a D:\b"
Shell "cmd /c rd/s/q C:\a"