ASP Duplicate File Finder

ASP Duplicate File Finder

by John Peterson

The Scenario

Sometimes I come up with a cool topic to write about and then have to figure out how to write the script to go along with it. Other times I have a cool script then have to find a way to tie it into an interesting topic. This time I messed things up royally and had to write a script to save my butt!

Let me give you a little background on this one. I was recently migrating an old section of the site into a different section. In the process, once I moved the files I was also updating them to use the latest version of our template. Don't ask me why, but I wasn't doing them in any particular order and then in the middle of the process I got interrupted and lost track of where I was. Worse yet, I couldn't just empty the destination and start over because it had originally contained some other things that didn't exist in the source folder. Well instead of opening every file and looking at them to see which ones I had already updated, I whipped up this little script to help get me back on track and thought some of you might find it useful.

The Script

I've neatened up the output some and put it in a table, but aside from that it's basically unchanged from the version I was using. Which means there are some problems or at least things you should know:

  • It only lists files found in the source directory. Files that exist only in the target directory are not listed.
  • It never checks to see if the files are really the same or not. It only looks at the file attributes... not the content of the file!
  • It could easily be modified to perform actions based on what it finds, but it currently does not. If you attempt this you should be sure to have a backup of the files to be manipulated and test carefully. It's quite easy for one typo in your script to wipe out or overwrite a whole folder... I've done it before!
  • I was only using date last modified. I've added the created date, but it can be weird... it's value is often after the last modified date... especially if the file was copied.



<%@ Language = "VBScript" %>

<% Option Explicit %>

<html>

<head>

  <title>Duplicate File Finder</title>

</head>



<body>



<table border="1">

<tr>

  <th>Filename</th>

  <th>Exists In Target Folder?</th>

  <th>Same Size?</th>

  <th>Same Created Date?</th>

  <th>Same Modified Date?</th>

</tr>



<%

Dim objFSO

Dim strSourcePath, strTargetPath

Dim objSourceFolder

Dim objFile

Dim objSourceFile, objTargetFile



strSourcePath = Server.MapPath("folder1")

strTargetPath = Server.MapPath("folder2")



Set objFSO = Server.CreateObject("Scripting.FileSystemObject")



Set objSourceFolder = objFSO.GetFolder(strSourcePath)



For Each objFile In objSourceFolder.Files

  Response.Write "<tr>" & vbCrLf

  Response.Write "<td>" & objFile.Name & "</td>"



  If objFSO.FileExists(strTargetPath & "\" & objFile.Name) Then

    Response.Write "<td>Yes</td>"



    Set objSourceFile = objFSO.GetFile(strSourcePath & "\" & objFile.Name)

    Set objTargetFile = objFSO.GetFile(strTargetPath & "\" & objFile.Name)



    If objSourceFile.Size = objTargetFile.Size Then

      Response.Write "<td>Yes</td>"

    Else

      Response.Write "<td>No</td>"

    End If



    If objSourceFile.DateCreated = objTargetFile.DateCreated Then

      Response.Write "<td>Yes</td>"

    Else

      Response.Write "<td>No</td>"

    End If



    If objSourceFile.DateLastModified = objTargetFile.DateLastModified Then

      Response.Write "<td>Yes</td>"

    Else

      Response.Write "<td>No</td>"

    End If



    Set objSourceFile = Nothing

    Set objTargetFile = Nothing

  Else

    Response.Write "<td>No</td>"



    ' You can add the blank <td>s if desired

    Response.Write "<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>"



    ' For a while I was moving files that didn't exist to the target.

    ' Left as comment in case anyone cares:

    'objFSO.MoveFile strSourcePath & "\" & objFile.Name,

    '  strTargetPath & "\" & objFile.Name

  End If



  Response.Write vbCrLf & "</tr>" & vbCrLf

Next 'objFile



Set objSourceFolder = Nothing

Set objFSO = Nothing

%>



</table>



</body>

</html>

Here's an example of what the script's output looks like. You could obviously make it pretty if you want, but I'll leave that to you.

Filename Exists In Target Folder? Same Size? Same Created Date? Same Modified Date?
HTML_Page_1.htmYesYesYesYes
HTML_Page_2.htmYesYesYesNo
HTML_Page_3.htmYesYesNoNo
HTML_Page_4.htmYesNoNoNo
HTML_Page_5.htmNo   

Download the Code

For those of you who want to download the code instead of cutting and pasting it from above, I've put together a zip file (4 KB) containing the script and two sample folders for you to play with.

Close    To Top
  • Prev Article-Web Design:
  • Next Article-Web Design:
  • Now: Tutorial for Web and Software Design > Web Design > ASP > Web Design Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction