By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,534 Members | 2,223 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,534 IT Pros & Developers. It's quick & easy.

Searching file system and returning xml based on date search crite

P: n/a
Hello group.
I've migrated from Win 2003 server to Win 2008 server.
I've been banging my head agaist a wall for several days now trying to
figure this out.

I have the following script that will search the file system and return file
names of all files within a folder and subfolders that meet the search
criteria of DateLastModified.

To test the output, you can use the following link:
http://www.hurricanealley.net/GT/ne...008%204:00%20PM
or even change the date time input in the URL.
The input part of the url is the date and time.
To see the actual file dates you can look here:
http://www.hurricanealley.net/GT/Data (sub folders also)

The problem I'm having is that some files names/paths that are returned are
older than the search criteria date/time and some files that are newer are
not being returned.
Any suggestions would be greatly appreciated
--
<%@ Language=VBScript %>
<?xml version="1.0" encoding="iso-8859-1"?>
<%

' Init path parameters
start_path = "data"
start_url = ""

' Parse date param
s = ""
for i = 1 to len(Request.QueryString)
if mid(Request.QueryString, i, 3) = "%20" then s = s + " " : i = i + 2
else s = s + mid(Request.QueryString, i, 1)
next
dim sdate
dim stime
n = 0 : sdate = s : stime = ""
for i = 1 to len(s) - 1
if mid(s, i, 1) = " " and n = 0 then n = i
next
if n 0 then sdate = Trim(Left(s, n - 1)) : stime = Trim(Right(s, Len(s) -
n))

Dim RequestDateTime
RequestDateTime = DateValue(sdate)
if stime <"" then RequestDateTime = RequestDateTime + TimeValue(stime)

' Write root node
%><newfiles fromdate="<%= s %>" datestr="<%= sdate %>" timestr="<%= stime
%>" resultdatetime="<%= RequestDateTime %>">
<%

' Create FileSystemObject variable
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' Process specified folder
tmp = ProcessFolder(Server.MapPath(start_path), start_url, chr(9), 0)

Set objFSO = Nothing
'---------------------------------------------
' Write file xml-node
Function WriteFile(objItem, strUrl, space)
%><%=space%><file name="<%= objItem.Name %>" size="<%= objItem.Size %>"
date="<%= objItem.DateCreated %>" url="<%= strUrl & objItem.Name %>"/>
<%
End Function

' Process folder
' writemode: 0 - write to xml-page, 1 - return new items count, 2 - return
newitems size
Function ProcessFolder(strPath, strUrl, space, writemode)

Dim objFolder 'Folder variable
Dim objItem 'Variable used to loop through the contents of the folder

' Get a handle on our folder
Set objFolder = objFSO.GetFolder(strPath)

res = 0

'scan files
For Each objItem In objFolder.Files
If (objItem.DateLastModified RequestDateTime) or (objItem.Name =
"ImageMap.xml") Then
If writemode = 0 Then tmp = WriteFile(objItem, strUrl, space)
If writemode = 1 Then res = res + 1
If writemode = 2 Then res = res + objItem.Size
End If
Next 'objItem

'scan subfolders
For Each objItem In objFolder.SubFolders
If InStr(1, objItem, "_vti", 1) = 0 Then
new_path = strPath & "\" & objItem.Name
lchar = "/" : if len(strUrl) 0 then lchar = right(strUrl, 1)
new_url = strUrl & objItem.Name & "/"
If writemode = 0 Then
' calc newitems count and size
items_count = ProcessFolder(new_path, "", "", 1) 'calc count
items_size = ProcessFolder(new_path, "", "", 2) 'calc size
' write folder xml-node
%><%=space%><folder name="<%= objItem.Name %>" newitems="<%=items_count%>"
newitems_size="<%=items_size%>">
<%
tmp = ProcessFolder(new_path, new_url, space + chr(9), writemode)
%><%=space%></folder>
<%
End If
If writemode >= 1 Then
res = res + ProcessFolder(new_path, "", "", writemode)
End If
End If
Next 'objItem

' All done! Kill off our object variables.
Set objItem = Nothing
Set objFolder = Nothing

ProcessFolder = res

End Function

%>
</newfiles>
--------------------------------------------------------------------------------

Thanks!
Bryan
Aug 11 '08 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.