Nhờ hướng dẫn cách xóa các file trùng nhau trong máy tính!

Liên hệ QC

xuan.nguyen82

Thành viên tích cực
Tham gia
29/9/10
Bài viết
1,548
Được thích
8,041
Giới tính
Nữ
Nghề nghiệp
Human Resource Director
Máy tính của em có rất nhiều file bị trùng nhau, nằm lung tung trong các folder, các ổ, nếu tìm thủ công để xóa từng file thì rất mất thời gian. Dùng phần mềm nó đòi xóa sạch, cứ trùng nhau là xóa hết.
Cho em hỏi có cách nào xóa các file trùng đó 1 cách nhanh nhất và chính xác nhất không ạ?
Chỉ giữ lại 1 file?
Em cảm ơn nhiều ạ!
 
Máy tính của em có rất nhiều file bị trùng nhau, nằm lung tung trong các folder, các ổ, nếu tìm thủ công để xóa từng file thì rất mất thời gian. Dùng phần mềm nó đòi xóa sạch, cứ trùng nhau là xóa hết.
Cho em hỏi có cách nào xóa các file trùng đó 1 cách nhanh nhất và chính xác nhất không ạ?
Chỉ giữ lại 1 file?
Em cảm ơn nhiều ạ!
Nhưng nội dung bên trong giống nhau hay không? Biết cái nào để lại cái nào xóa?
 
Máy tính của em có rất nhiều file bị trùng nhau, nằm lung tung trong các folder, các ổ, nếu tìm thủ công để xóa từng file thì rất mất thời gian. Dùng phần mềm nó đòi xóa sạch, cứ trùng nhau là xóa hết.
Cho em hỏi có cách nào xóa các file trùng đó 1 cách nhanh nhất và chính xác nhất không ạ?
Chỉ giữ lại 1 file?
Em cảm ơn nhiều ạ!
Trước tiên phải xác định thế nào là trùng?
Nếu trùng tên + trùng size là trùng thì dễ
Nếu tính luôn vụ trùng nội dung thì... Ẹc... Ẹc... khó (làm được chắc tốc độ cũng rất chậm)
 
Trước tiên phải xác định thế nào là trùng?
Nếu trùng tên + trùng size là trùng thì dễ
Nếu tính luôn vụ trùng nội dung thì... Ẹc... Ẹc... khó (làm được chắc tốc độ cũng rất chậm)
Theo tôi, làm sao có thể liệt kê các File trùng đang nằm ở Folder nào. Quyết định xóa file nào, để lại File nào là do tác giả quyết định!
 
Về cơ bản, em chỉ cần xóa các file trùng tên + trùng size...
Hic, nhưng nếu xóa được vụ trùng cả nội dung thì tốt quá ạ, nếu không được thì em chỉ cần xóa trùng tên + trùng size thôi ạ.
vì cũng có 1 số file em lưu tên khác tý xíu nhưng nội dung giống nhau do em không nhớ đã tải file đó về máy chưa ạ. Thế nên giờ file trùng tùm lum ạ. em có thể chuyển các file đó về 1 ổ D duy nhất cho các bác dễ xử lý giúp em ạ.
 
Lần chỉnh sửa cuối:
Về cơ bản, em chỉ cần xóa các file trùng tên + trùng size...
Hic, nhưng nếu xóa được vụ trùng cả nội dung thì tốt quá ạ, nếu không được thì em chỉ cần xóa trùng tên + trùng size thôi ạ.
vì cũng có 1 số file em lưu tên khác tý xíu nhưng nội dung giống nhau do em không nhớ đã tải file đó về máy chưa ạ. Thế nên giờ file trùng tùm lum ạ. em có thể chuyển các file đó về 1 ổ D duy nhất cho các bác dễ xử lý giúp em ạ.

Cùng độ lớn nhưng lõi vẫn có thể khác nhau. Độ lớn chả nói lên cái gì về lõi cả. Trong 1 thư có "Chào An" trong thư ở thư mục khác có "Chào em"

2 tập tin "y như nhau" có nghĩa là có cùng độ lớn và các bai (bất kỳ tập tin nào - văn bản, phim, ảnh, nhạc, exe, dll v...v chẳng qua cũng là một "chuỗi" bai) tương ứng bằng nhau.

Tôi nghĩ qua loa được 2 code.
Tất nhiên bạn tự viết code tìm các tập tin bạn quan tâm (chẳng hạn bạn không quan tâm tới các tập tin exe, dll v...v) vì đầy rẫy trên GPE.
Giống nhau thì bạn xóa cái nào là tùy bạn. Không xóa cũng tùy bạn.

Code:
Mã:
Private Const FILE_ATTRIBUTE_NORMAL As Long = &H80
Private Const GENERIC_READ As Long = &H80000000
Private Const OPEN_EXISTING As Long = 3
Private Declare Function CreateFile Lib "kernel32.dll" Alias "CreateFileA" (ByVal lpFileName As String, _
    ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
    ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, _
    ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function GetFileSize Lib "kernel32.dll" (ByVal hFile As Long, ByVal lpFileSizeHigh As Long) As Long
Private Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, _
    ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, _
    ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function CompMemory Lib "ntdll.dll" Alias "RtlCompareMemory" _
(ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long) As Long

Function [COLOR=#ff0000]IsIdenticFiles_API[/COLOR](ByVal f1 As String, ByVal f2 As String) As Boolean
Dim hFile1 As Long, hFile2 As Long, FileSize1 As Long, FileSize2 As Long
Dim m1() As Byte, m2() As Byte, dwBytes As Long
    On Error GoTo end_
    hFile1 = CreateFile(f1, GENERIC_READ, 0, ByVal 0, _
                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    hFile2 = CreateFile(f2, GENERIC_READ, 0, ByVal 0, _
                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    If hFile1 = -1 Or hFile2 = -1 Then GoTo end_
    FileSize1 = GetFileSize(hFile1, ByVal 0)
    FileSize2 = GetFileSize(hFile2, ByVal 0)
    If FileSize1 <> FileSize2 Then
        IsIdenticFiles_API = False
    Else
        ReDim m1(0 To FileSize1 - 1)
        ReDim m2(0 To FileSize2 - 1)
        ReadFile hFile1, m1(0), FileSize1, dwBytes, ByVal 0
        ReadFile hFile2, m2(0), FileSize2, dwBytes, ByVal 0
        IsIdenticFiles_API = CompMemory(m1(0), m2(0), FileSize1) = FileSize1
    End If
end_:
    CloseHandle hFile1
    CloseHandle hFile2
End Function

Mã:
Private Declare Function CompMemory Lib "ntdll.dll" Alias "RtlCompareMemory" _
(ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long) As Long

Function [COLOR=#ff0000]IsIdenticFiles_VB[/COLOR](ByVal f1 As String, ByVal f2 As String) As Boolean
Dim fnum1 As Integer, fnum2 As Integer, res As Long
Dim m1() As Byte, m2() As Byte, f_len As Long
    
    fnum1 = FreeFile
    Open f1 For Binary As #fnum1
    fnum2 = FreeFile
    Open f2 For Binary As #fnum2
    
    If LOF(fnum1) <> LOF(fnum2) Then
        IsIdenticFiles_VB = False
    Else
        ReDim m1(0 To LOF(fnum1) - 1)
        Get #fnum1, , m1
        ReDim m2(0 To LOF(fnum2) - 1)
        Get #fnum2, , m2
        
        f_len = UBound(m1) + 1
        IsIdenticFiles_VB = CompMemory(m1(0), m2(0), f_len) = f_len
    End If
    
    Close #fnum1
    Close #fnum2
End Function

Cũng có thể code còn có thiếu sót, chưa tối ưu.
Bạn thử test về tốc độ xem. Cái gì chứ khoản test tôi lười lắm.
 
Lần chỉnh sửa cuối:
Đơn giản hơn bạn thử dùng Anti-Twin (freeware), ultrafile search (freeware)
Bản thân windows 7, 8 cũng hỗ trợ mà
 
Lần chỉnh sửa cuối:
Hãy dùng thử chức năng Duplicate Files Finder của Glary Utilities 100% freeware Download tại đây http://www.glarysoft.com/
 

File đính kèm

  • Duplicate Files Finder.JPG
    Duplicate Files Finder.JPG
    50.6 KB · Đọc: 88
Hic, mình thử rồi mà không hiểu sao nó xóa sạch dữ liệu. Từ nhiều file trùng thành trống trơn luôn rồi.
(Cũng may là đã đề phòng copy toàn bộ dữ liệu sang máy khác), nếu không làm lại từ đầu thì ...TOI hỏi Tỏi...
Cảm ơn các bạn rất nhiều. Chưa có cách nào hiệu quả. Có lẽ xóa ...thủ công...thì mới an toàn.
 
Hic, mình thử rồi mà không hiểu sao nó xóa sạch dữ liệu. Từ nhiều file trùng thành trống trơn luôn rồi.
(Cũng may là đã đề phòng copy toàn bộ dữ liệu sang máy khác), nếu không làm lại từ đầu thì ...TOI hỏi Tỏi...
Cảm ơn các bạn rất nhiều. Chưa có cách nào hiệu quả. Có lẽ xóa ...thủ công...thì mới an toàn.

Bạn đang nói về cách của ai vậy?
 
Lần chỉnh sửa cuối:
Cùng độ lớn nhưng lõi vẫn có thể khác nhau. Độ lớn chả nói lên cái gì về lõi cả. Trong 1 thư có "Chào An" trong thư ở thư mục khác có "Chào em"

2 tập tin "y như nhau" có nghĩa là có cùng độ lớn và các bai (bất kỳ tập tin nào - văn bản, phim, ảnh, nhạc, exe, dll v...v chẳng qua cũng là một "chuỗi" bai) tương ứng bằng nhau.

Tôi nghĩ qua loa được 2 code.
Tất nhiên bạn tự viết code tìm các tập tin bạn quan tâm (chẳng hạn bạn không quan tâm tới các tập tin exe, dll v...v) vì đầy rẫy trên GPE.
Giống nhau thì bạn xóa cái nào là tùy bạn. Không xóa cũng tùy bạn.

Cũng có thể code còn có thiếu sót, chưa tối ưu.
Bạn thử test về tốc độ xem. Cái gì chứ khoản test tôi lười lắm.

Mình đã test thử, trên máy mình với code này, toàn bộ các file trùng đã được loại bỏ, chỉ có điều do mình không để ý, ngay từ đầu nên có những file mình căn chỉnh rồi mà không nhớ thì bị xóa (cũng may là ít). giữ lại file chưa chỉnh sửa.
Lần 1 chạy code máy bị đơ luôn, không hoạt động được phải khởi động lại. Lần 2 thì OK.
Mình thử với các phần mềm thì độ an toàn không cao lắm. Nên mình sử dụng cách của Siwtom.

Cảm ơn Siwtom rất nhiều!
 
Mình đã test thử, trên máy mình với code này, toàn bộ các file trùng đã được loại bỏ, chỉ có điều do mình không để ý, ngay từ đầu nên có những file mình căn chỉnh rồi mà không nhớ thì bị xóa (cũng may là ít). giữ lại file chưa chỉnh sửa.
Lần 1 chạy code máy bị đơ luôn, không hoạt động được phải khởi động lại. Lần 2 thì OK.
Mình thử với các phần mềm thì độ an toàn không cao lắm. Nên mình sử dụng cách của Siwtom.

Cảm ơn Siwtom rất nhiều!

Nếu bạn sử dụng phần mềm mà bạn suy nghĩ chút ít thì ... biết ngay mà.
vd. bạn dùng Duplicate Files Finder.
Bạn sẽ thấy có 4 thiết lập trong đó có: "cùng ngày tháng" và "bỏ qua các tập tin có độ lớn < ...". Hai cái này thường là bạn bỏ chọn vì 2 tập tin giống nhau có thể được tạo ở 2 thời điểm khác nhau. Và nhiều khi bạn muốn tìm các tập tin trùng nhau nhưng không giới hạn độ lớn. Vậy chỉ xét 2 tùy chọn còn lại là: "cùng độ lớn", "cùng tên".
Nếu là tôi thì sau khi đọc TÊN 2 tùy chọn này thì trong đầu tôi vang lên 1 tiếng chuông cảnh báo: nó coi 2 tập tin cùng tên, cùng độ lớn là như nhau?
Đó mới chỉ là tiếng chuông cảnh báo, còn để chắc chắn thì phải thử. Vậy tôi lập 1 thư mục Test mà trong đó có: 1 tập tin "thu.txt" với nội dung "Chao An" và thư mục Test1. Trong Test1 tôi có 1 tập tin "thu.txt" với nội dung: "Chao Em".
Bây giờ tôi chọn thư mục bắt đầu là "Test" thì dù tôi chỉ đánh dấu kiểm vào "cùng tên" hoặc "cùng độ lớn" hoặc cả hai thì nó luôn tìm ra 2 tập tin trùng.
Nói cho cùng thì phần mềm làm ... đúng như yêu cầu của tôi lựa chọn, tức tìm "cùng tên" và "cùng độ lớn". Chỉ có điều là yêu cầu của tôi thực ra là tìm "cùng lõi". Vì cùng tên và độ lớn chả nói gì về lõi cả.
Tóm lại chỉ cần suy nghĩ một chút thì sẽ thấy nghi hoặc (tiếng chuông cảnh báo), và có nghi hoặc rồi thì chỉ cần chút thử nghiệm để "ra ngô ra khoai".
Tôi biết là Duplicate Files Finder không tìm được cái bạn muốn (thực ra cái tên Duplicate Files Finder phải hiểu là: tìm cùng tên, độ lớn chứ không phải là: tìm "cùng lõi" - identical content. Hai cái này khác nhau) nhưng không muốn "bới bèo ra bọ". Vì tôi đã có mác "hay gây sự" nên dần dần tôi sẽ ít can thiệp vào bài của người khác. Họ sai thì thôi cứ thây kệ.
 
Nếu bạn sử dụng phần mềm mà bạn suy nghĩ chút ít thì ... biết ngay mà.
vd. bạn dùng Duplicate Files Finder.
Bạn sẽ thấy có 4 thiết lập trong đó có: "cùng ngày tháng" và "bỏ qua các tập tin có độ lớn < ...". Hai cái này thường là bạn bỏ chọn vì 2 tập tin giống nhau có thể được tạo ở 2 thời điểm khác nhau. Và nhiều khi bạn muốn tìm các tập tin trùng nhau nhưng không giới hạn độ lớn. Vậy chỉ xét 2 tùy chọn còn lại là: "cùng độ lớn", "cùng tên".
Nếu là tôi thì sau khi đọc TÊN 2 tùy chọn này thì trong đầu tôi vang lên 1 tiếng chuông cảnh báo: nó coi 2 tập tin cùng tên, cùng độ lớn là như nhau?
Đó mới chỉ là tiếng chuông cảnh báo, còn để chắc chắn thì phải thử. Vậy tôi lập 1 thư mục Test mà trong đó có: 1 tập tin "thu.txt" với nội dung "Chao An" và thư mục Test1. Trong Test1 tôi có 1 tập tin "thu.txt" với nội dung: "Chao Em".
Bây giờ tôi chọn thư mục bắt đầu là "Test" thì dù tôi chỉ đánh dấu kiểm vào "cùng tên" hoặc "cùng độ lớn" hoặc cả hai thì nó luôn tìm ra 2 tập tin trùng.
Nói cho cùng thì phần mềm làm ... đúng như yêu cầu của tôi lựa chọn, tức tìm "cùng tên" và "cùng độ lớn". Chỉ có điều là yêu cầu của tôi thực ra là tìm "cùng lõi". Vì cùng tên và độ lớn chả nói gì về lõi cả.
Tóm lại chỉ cần suy nghĩ một chút thì sẽ thấy nghi hoặc (tiếng chuông cảnh báo), và có nghi hoặc rồi thì chỉ cần chút thử nghiệm để "ra ngô ra khoai".
Tôi biết là Duplicate Files Finder không tìm được cái bạn muốn (thực ra cái tên Duplicate Files Finder phải hiểu là: tìm cùng tên, độ lớn chứ không phải là: tìm "cùng lõi" - identical content. Hai cái này khác nhau) nhưng không muốn "bới bèo ra bọ". Vì tôi đã có mác "hay gây sự" nên dần dần tôi sẽ ít can thiệp vào bài của người khác. Họ sai thì thôi cứ thây kệ.

Cách của Siwtom hiệu quả ở chỗ tìm "cùng lõi" và đó là điều mình cần trong việc xóa bỏ các file trùng nhau này. Do trong công ty có nhiều phòng ban bị tương tự nên mình áp dụng cho các máy tính khác nữa.
Rất cảm ơn Siwtom!
 
nhưng không muốn "bới bèo ra bọ". Vì tôi đã có mác "hay gây sự" nên dần dần tôi sẽ ít can thiệp vào bài của người khác. Họ sai thì thôi cứ thây kệ.

Sao bạn lại nói vậy?
- Thứ nhất: Ai cũng biết bạn rất giỏi, vậy bạn giúp người khác cũng là điều hiển nhiên (giỏi giúp dở, chả lẽ ngược lại?)
- Thứ hai: Không lý nào giúp người lại không tạo được niềm vui cho chính bản thân mình? (nói cho cùng cũng là cơ hội để ôn tập lại những kiến thức đã học)
- Thứ ba: Tôi biết rất nhiều người đều cho rằng bạn nóng tính, thậm chí cũng có người cho rằng bạn hay gây sự (cũng có lý vì cái cách hành văn của bạn)... Vậy nếu bạn đã thấy được vấn đề, thiết nghĩ bạn chịu sửa đổi một chút cũng là chuyện tốt cho tất cả (cho bạn và cho mọi người)...
vân... vân... và vân... vân...

Cá nhân tôi chẳng hề quan tâm đến việc bạn có nổi nóng hay không... chỉ cần giúp được tôi thì tôi đều tôn làm thầy ---> Tiếc rằng đời không đơn giản vậy! 9 người 10 ý! Dù gì, sống giữa cộng đồng (dù là ảo) nhưng không khí yên bình chẳng tốt lắm sao?
------------------------
Vài lời chân tình, nếu có gì không phải mong bạn bỏ qua
Chúc bạn vui và nhiều sức khỏe nhé!
ANH TUẤN
(chắc lạc đề mất rồi)
 

- Thứ ba: Tôi biết rất nhiều người đều cho rằng bạn nóng tính, thậm chí cũng có người cho rằng bạn hay gây sự (cũng có lý vì cái cách hành văn của bạn)... Vậy nếu bạn đã thấy được vấn đề, thiết nghĩ bạn chịu sửa đổi một chút cũng là chuyện tốt cho tất cả (cho bạn và cho mọi người)...

Ý của tôi là "tôi bị gán cái mác hay gây sự" chứ không phải là tôi thấy mình hay gây sự.
Tôi đính chính thế thôi chứ không muốn bàn gì về chuyện này.

Chúc bạn vui và nhiều sức khỏe nhé

Tôi cũng chúc bạn nhiều sức khỏe
 
Code của siwtom rất hay và thực tế - cái này mà phát triển thành 1 tool dạng COM hay Exe, hay DLL thì tốc độ sẽ nhanh và ý nghĩa thực tế

Ý của tôi là "tôi bị gán cái mác hay gây sự" chứ không phải là tôi thấy mình hay gây sự.
Tôi đính chính thế thôi chứ không muốn bàn gì về chuyện này.

Oh, kệ họ đi siwtom ah,
có 1 cuốn sách viết: Đừng để bao giờ thuận và tin vào cái mác do kẻ khác dán cho mình - cuộc sống bao giờ cũng thế người ta sợ đánh giá chính mình, nhưng lại không ngại hoặc hùa theo đám đông hoặc kẻ có quyền đi gán mác cho người khác.

Chúc bạn vui, và tiếp tục có nhiều code hay
 
Bạn dùng Anti_TWin ấy, nó cho bạn tính năng chọn dần dần; xóa hay di chuyển file là được...
 
Web KT

Bài viết mới nhất

Back
Top Bottom