Public Sub 目录下所有文件解压(Source As String, Target As String, reutxt As String, man As String, dropmak As Integer) '(i)MyChar
Dim MyPath As String, MyName As String, retval As Long, mystr As String, N As Long, i As Long, MyChar1 As String, mendrop As Integer, N11 As Long
Dim a() As String, b() As String
Dim fdropmak As Integer
N11 = 100 '假定100个目录
ReDim a(1 To N11)
N = 1
MyPath = Source ' 指定路径。
MyName = Dir(MyPath, vbDirectory) ' 找寻第一项。'第一次用带有通配符的参数'接下去不需要参数
Do While MyName <> "" ' 开始循环。
If MyName <> "." And MyName <> ".." Then ' 跳过当前的目录及上层目录。
If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then ' 使用位比较来确定 MyName 代表一目录。
If N > N11 Then
N11 = UBound(a) + 100
ReDim Preserve a(1 To N11) '超过100个目录,再扩展
End If
a(N) = MyName
N = N + 1
End If
End If
MyName = Dir ' 查找下一个目录。
Loop
mendrop = 0
For i = 1 To N - 1
If Dir(Target, vbDirectory) = "" Then MkDir Target '创建目录
If Dir(Target & a(i), vbDirectory) = "" Then MkDir Target & a(i) '创建目录
mystr = "C:\Program Files\WinRAR\WinRAR.exe"
解压 mystr, Source & a(i) & "\RNCCN-*.gz", Target & a(i), retval
'MsgBox Source & a(i) & "\*.gz" & "#" & Target & a(i)
Dim f As String
fdropmak = 0
f = Target & a(i) & "\" & Dir(Target & a(i) & "\RNCCN-*.xml")
' Sleep 50
TRACE f, MyChar1, a(i), dropmak, fdropmak '文件,结果,目录,标记
If fdropmak = 1 Then
reutxt = reutxt & Chr(13) & man & MyChar1
mendrop = mendrop + 1
End If
Next i
If i > 1 And mendrop = 0 Then reutxt = reutxt & Chr(13) & man & MyChar1
If i = 1 Then reutxt = reutxt & Chr(13) & man & "无文件生成"
End Sub
|