現小弟遇到這樣一個難題﹕
在這個文件里有許多文件﹐但其中有一些文件是重復的﹗現要冊除那些重復的文件﹐但要在那些重復文件中保留一個文件﹗
例﹕在文件夾abc下有下面的文件﹕
mmm.000001.200308121345.com
mmm.000002.200308121378.com
mmm.000003.200308121412.com
mmm.000003.200308121418.com
mmm.000003.200308121422.com
mmm.000003.200308121447.com
mmm.000004.200308121512.com
mmm.000004.200308121523.com
mmm.000004.200308121536.com
mmm.000005.200308121537.com
mmm.000006.200308121578.com
mmm.000007.200308121610.com
mmm.000007.200308121612.com
mmm.000008.200308121675.com
mmm.000009.200308121704.com
mmm.000010.200308121731.com
mmm.000011.200308121801.com
mmm.000012.200308121812.com
mmm.000012.200308121845.com
mmm.000012.200308121901.com
mmm.000012.200308121941.com
mmm.000012.200308121972.com
mmm.000013.200308121982.com
mmm.000013.200308122001.com
mmm.000013.200308122008.com
mmm.000013.200308122022.com
mmm.000013.200308122042.com
mmm.000013.200308122101.com
mmm.000014.200308122112.com現我只想在那些重復的文件中保留哪些從第十二位算起到第二十三位中最大的如﹕像mmm.000003.200308121447.com,mmm.000013.200308122101.com,mmm.000004.200308121536.com,mmm.000007.200308121612.com,mmm.000012.200308121972.com保留﹐其它那些重復的文件要刪除。該怎樣實現?請各位大大幫忙﹗﹗﹗﹗﹗
在這個文件里有許多文件﹐但其中有一些文件是重復的﹗現要冊除那些重復的文件﹐但要在那些重復文件中保留一個文件﹗
例﹕在文件夾abc下有下面的文件﹕
mmm.000001.200308121345.com
mmm.000002.200308121378.com
mmm.000003.200308121412.com
mmm.000003.200308121418.com
mmm.000003.200308121422.com
mmm.000003.200308121447.com
mmm.000004.200308121512.com
mmm.000004.200308121523.com
mmm.000004.200308121536.com
mmm.000005.200308121537.com
mmm.000006.200308121578.com
mmm.000007.200308121610.com
mmm.000007.200308121612.com
mmm.000008.200308121675.com
mmm.000009.200308121704.com
mmm.000010.200308121731.com
mmm.000011.200308121801.com
mmm.000012.200308121812.com
mmm.000012.200308121845.com
mmm.000012.200308121901.com
mmm.000012.200308121941.com
mmm.000012.200308121972.com
mmm.000013.200308121982.com
mmm.000013.200308122001.com
mmm.000013.200308122008.com
mmm.000013.200308122022.com
mmm.000013.200308122042.com
mmm.000013.200308122101.com
mmm.000014.200308122112.com現我只想在那些重復的文件中保留哪些從第十二位算起到第二十三位中最大的如﹕像mmm.000003.200308121447.com,mmm.000013.200308122101.com,mmm.000004.200308121536.com,mmm.000007.200308121612.com,mmm.000012.200308121972.com保留﹐其它那些重復的文件要刪除。該怎樣實現?請各位大大幫忙﹗﹗﹗﹗﹗
解决方案 »
- VB MSHFlexGrid 控件数据更新的问题
- 用户定义类型未定义 我加了引用了还是不行
- 文件夹a下包括 2000 ic images等文件夹和一个安装程序,想实现程序安装时,自动将2000 ic images等文件夹复制到程序的安装路径下!
- vb如何编辑utf-8编码的文本文件
- 新手提问:关于用vb进文件转换的问题~
- 如何在VB中把一个中文字拆分成两个字节呢?
- 用WINSOK与UNIX主机连接为什么不行?
- 100分求助:用MSComm控件串行通信,怎摸接收不到呢?请高手指点--在线等
- 如何知道当前sqlserver是否已运行?谢谢
- 高分请教菜鸟问题,如何调用默认的邮件程序,例如outlook发送邮件。
- 对从来没接触过语言的人学vb,那本教材比较好!
- 请教大虾Where子句问题?
以下代码需要引用Microsoft Scripting Runtimeconst FileDate as string="你要的数据"dim fs as new filesystemobject
dim fd as folder
dim fl as file
dim fname as stringset fd=fs.getfolder("路径")
for each fl in fd.files
fname=mid(fl.name,12,12)
if fname<FileDate then
kill "路径"& fl.name
end if
next
以下代码需要引用Microsoft Scripting Runtimeconst FileDate as string="你要的数据"dim fs as new filesystemobject
dim fd as folder
dim fl as file
dim fname as stringset fd=fs.getfolder("路径")
for each fl in fd.files
fname=mid(fl.name,12,12)
if fname<FileDate then
kill "路径"& fl.name
end if
next它的可以实现
File1.Path = "ÄãµÄÎļþËùÔÚµÄĿ¼£¡£¨abc£©"
Dim a() As String
Dim i As Long, j As Long
ReDim a(j) As String
For i = 1 To File1.ListCount
If a(j) <> File1.List(i - 1) Then
a(j) = File1.List(i - 1)
j = j + 1
ReDim Preserve a(j) As String
Else
If Right$(File1.Path, 1) = "\" Then
Kill File1.Path & File1.List(i - 1)
Else
Kill File1.Path & "\" & File1.List(i - 1)
End If
End If
Next i
End Sub
File1.Path = "your folder name!(abc£©"
Dim a() As String
Dim i As Long, j As Long
ReDim a(j) As String
For i = 1 To File1.ListCount
If a(j) <> File1.List(i - 1) Then
a(j) = File1.List(i - 1)
j = j + 1
ReDim Preserve a(j) As String
Else
If Right$(File1.Path, 1) = "\" Then
Kill File1.Path & File1.List(i - 1)
Else
Kill File1.Path & "\" & File1.List(i - 1)
End If
End If
Next i
End Sub
File1.Path = "your folder name(abc)"
Dim a() As String
Dim Have_TM As Boolean
Dim i As Long, j As Long
ReDim a(j) As String
For i = 1 To File1.ListCount
Have_TM = False
For j = 0 To UBound(a)
If a(j) = File1.List(i - 1) Then
Have_TM = True
Kill IIf(Right$(File1.Path, 1) = "\", File1.Path & File1.List(i - 1), _
File1.Path & "\" & File1.List(i - 1))
Exit For
End If
Next j
If Have_TM = False Then
a(j) = File1.List(i - 1)
j = j + 1
ReDim Preserve a(j) As String
End If
Next i
End Sub
On Error Resume Next
Dim FSO As New FileSystemObject
Dim mfolder As Folder
Dim mfile As File
Dim i As Long
i = 0
Dim mfilelist() As String
Set mfolder = FSO.GetFolder("c:\mc\abc\")'改成你自己的路径,下同
For Each mfile In mfolder.Files
ReDim Preserve mfilelist(i)
mfilelist(i) = mfile.Name
i = i + 1
Next
MsgBox mfilelist(i - 1)
Dim tempdir As String
tempdir = "c:\mytesttemp"
Set mfolder = FSO.CreateFolder(tempdir)
Dim usedic As New Dictionary
Dim usefilelist() As String
Dim j As Long
j = 0
Dim temps As Variant
Dim maxnum As Double
For i = 0 To UBound(mfilelist)
temps = Split(mfilelist(i), ".")
If usedic.Exists(temps(1)) = True Then
If CDbl(temps(2)) > CDbl(usedic(temps(1))) Then
usedic(temps(1)) = temps(2)
End If
Else
usedic.Add temps(1), temps(2)
End If
Next
ReDim usefilelist(usedic.Count - 1)
Dim mykey As Variant
Dim myitem As Variant
mykey = usedic.Keys
myitem = usedic.Items
For i = 0 To usedic.Count - 1
usefilelist(i) = "mmm." + mykey(i) + "." + myitem(i) + ".com"
FileCopy "c:\mc\abc\" + usefilelist(i), tempdir + "\" + usefilelist(i)
Debug.Print usefilelist(i)
Next
FSO.DeleteFolder "c:\mc\abc"
FSO.CopyFolder tempdir, "c:\mc\abc", True
FSO.DeleteFolder tempdir
Set FSO = Nothing
Set mfolder = Nothing
Set mfile = Nothing
End Sub
dim bytFile1()as byte
dim bytFile2()as byte
先判断文件大小是否一致,不一致则都保留(肯定不是重复文件),否则做如下判断。
将要比较的文件通过OPEN,Get等分别读取到bytFile1,bytFile2中,使用循环进行判断。
for i=0 to ubound(bytfile1)-1
if bytfile1(i)<>bytfile2(i) then
exit for
end if
next
if i>ubound(bytfile1)-1 then
'两个文件相同,删除其中一个文件
end if
你试试吧,方法肯定是没错的,具体执行的效率可能不高。