Tweak to existing code-scanning folders for new files

B

Bryan

Hello group.
I have some code (given to me), but I don't know alot about ASP, so I was
hoping someone here can help. Running on Win 2008 server.

The code below will scan a folder and subfolder with a date/time input and
return xml structure off all files that are newer than the supplied date/time.

The problem is that the returned xml has path names like
C:\folder\subfolder\filename.ext
I would like it to be more like /folder/subfolder/filename.ext
Also, the initial path gets returned in the xml "data", but I only want the
sub folders below "data" to get scanned and info returned...
Any help would be greatly appreciated.

function indent(iTreeLevel)
dim rv : rv = ""
if iTreeLevel > 0 then
for i = 1 to iTreeLevel
rv = rv & " "
next
end if
indent = rv
end function

'==========================================

function newItemsCount(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + 1
End If
Next
newItemsCount = rv
end function

'==========================================

function newItemsSize(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + objFile.Size
End If
Next
newItemsSize = rv
end function

'==========================================

sub FolderListing(strPath, dCutoffDate, blnRecursive, iTreeLevel)

Dim objFolder
Set objFolder = objFSO.GetFolder(strPath)

response.write(indent(iTreeLevel) & "<folder name=""" & objFolder.Name &
""" newitems=""" & newItemsCount(objFolder, dCutoffDate) & """
newitems_size=""" & newItemsSize(objFolder, dCutoffDate) & """>" & vbCrLf)

For Each objFile In objFolder.Files
sFileSize = objFile.Size
sFileName = objFile.Name
sFileType = objFile.Type
sFileCreated = objFile.DateCreated
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
response.write(indent(iTreeLevel) & " <file name=""" & sFileName & """
size=""" & sFileSize & """ date=""" & sFileModified & """ url=""" & strPath &
"\" & sFileName & """/>" & vbCrLf)
End If
Next

If blnRecursive Then
Dim objSubFolders
Set objSubFolders = objFolder.SubFolders
For Each objFolder in objSubFolders
sFolderName = objFolder.Name
sFolderPath = strPath & "\" & sFolderName
FolderListing sFolderPath, dCutoffDate, blnRecursive, iTreeLevel+1
Next
End if

response.write(indent(iTreeLevel) & "</folder>" & vbCrLf)

end sub

'=========================================================================================


sDateTime = unescape(Request.QueryString)
aDateTime = split(sDateTime, " ")
sDate = aDateTime(0)
sTime = aDateTime(1) & " " & aDateTime(2)
dDate = DateValue(sDate)
dTime = TimeValue(sTime)
dDateTime = dDate + dTime



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


%>



<?xml version="1.0" encoding="utf-8"?>

<newfiles fromdate="<%= dDate %>" datestr="<%= sDate %>" timestr="<%= sTime
%>" resultdatetime="<%= dDateTime %>">

<%
FolderListing server.MapPath("data"), dDateTime, true, 0
%>

</newfiles>
 
A

Anthony Jones

Bryan said:
Hello group.
I have some code (given to me), but I don't know alot about ASP, so I was
hoping someone here can help. Running on Win 2008 server.

The code below will scan a folder and subfolder with a date/time input and
return xml structure off all files that are newer than the supplied date/time.

The problem is that the returned xml has path names like
C:\folder\subfolder\filename.ext
I would like it to be more like /folder/subfolder/filename.ext
Also, the initial path gets returned in the xml "data", but I only want the
sub folders below "data" to get scanned and info returned...
Any help would be greatly appreciated.

function indent(iTreeLevel)
dim rv : rv = ""
if iTreeLevel > 0 then
for i = 1 to iTreeLevel
rv = rv & " "
next
end if
indent = rv
end function

'==========================================

function newItemsCount(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + 1
End If
Next
newItemsCount = rv
end function

'==========================================

function newItemsSize(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + objFile.Size
End If
Next
newItemsSize = rv
end function

'==========================================

sub FolderListing(strPath, dCutoffDate, blnRecursive, iTreeLevel)

Dim objFolder
Set objFolder = objFSO.GetFolder(strPath)

response.write(indent(iTreeLevel) & "<folder name=""" & objFolder.Name &
""" newitems=""" & newItemsCount(objFolder, dCutoffDate) & """
newitems_size=""" & newItemsSize(objFolder, dCutoffDate) & """>" & vbCrLf)

For Each objFile In objFolder.Files
sFileSize = objFile.Size
sFileName = objFile.Name
sFileType = objFile.Type
sFileCreated = objFile.DateCreated
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
response.write(indent(iTreeLevel) & " <file name=""" & sFileName & """
size=""" & sFileSize & """ date=""" & sFileModified & """ url=""" & strPath &
"\" & sFileName & """/>" & vbCrLf)
End If
Next

If blnRecursive Then
Dim objSubFolders
Set objSubFolders = objFolder.SubFolders
For Each objFolder in objSubFolders
sFolderName = objFolder.Name
sFolderPath = strPath & "\" & sFolderName
FolderListing sFolderPath, dCutoffDate, blnRecursive, iTreeLevel+1
Next
End if

response.write(indent(iTreeLevel) & "</folder>" & vbCrLf)

end sub

'===========================================================================
==============


sDateTime = unescape(Request.QueryString)
aDateTime = split(sDateTime, " ")
sDate = aDateTime(0)
sTime = aDateTime(1) & " " & aDateTime(2)
dDate = DateValue(sDate)
dTime = TimeValue(sTime)
dDateTime = dDate + dTime



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


%>



<?xml version="1.0" encoding="utf-8"?>

<newfiles fromdate="<%= dDate %>" datestr="<%= sDate %>" timestr="<%= sTime
%>" resultdatetime="<%= dDateTime %>">

<%
FolderListing server.MapPath("data"), dDateTime, true, 0
%>

</newfiles>


Could not bring myself to tweak that code. Here is an alternative ASP:-

<%

Dim gfso : Set gfso = Server.CreateObject("Scripting.FileSystemObject")
Dim gdatCutOff : gdatCutOff = FromISO8601(Request.QueryString("cutoff"))

Dim goXML : Set goXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
goXML.LoadXML "<newItems />"

Dim gelemNewFiles : Set gelemNewFiles = goXML.documentElement

gelemNewFiles.setAttribute "from", ToISO8601(gdatCutOff)

Dim goDataFolder : Set goDataFolder = gfso.GetFolder(Server.MapPath("data"))

GetFolderXML gelemNewFiles, goDataFolder, gdatCutOff

DropElems gelemNewFiles, "folder[@name='data']/file"

Response.ContentType = "text/xml"
Response.CharSet = "UTF-8"
goXML.Save Response

Sub GetFolderXML(relemParent, roFolder, rdatCutOff)

Dim oFolder
Dim oFile
Dim elemFolder
Dim elemFile

Set elemFolder = AddElem(relemParent, "folder", Null)
elemFolder.setAttribute "name", roFolder.Name

For Each oFolder In roFolder.SubFolders
GetFolderXML elemFolder, oFolder, rdatCutOff
Next

For Each oFile In roFolder.Files
If oFile.DateLastModified > rdatCutOff Then
Set elemFile = AddElem(elemFolder, "file", Null)
elemFile.setAttribute "name", oFile.Name
elemFile.setAttribute "size", oFile.Size
elemFile.setAttribute "lastModified", ToISO8601(oFile.DateLastModified)
End If
Next

End Sub

Sub DropElems(relem, rsXPath)

Dim oNode
Dim oList : Set oList = relem.SelectNodes(rsXPath)
Dim lDummy : lDummy = oList.length 'Fill list
For Each oNode in oList
oNode.parentNode.removeChild oNode
Next

End Sub

Function FromISO8601(s)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#DS
' Returns date in local time if timezone not present or GMT if timezone is
present
FromISO8601 = DateSerial(Mid(s,1,4), Mid(s,5,2), Mid(s,7,2))

If Len(s) > 8 Then
FromISO8601 = FromISO8601 + CDate(Mid(s,10,8))
End If

If Len(s) > 17 Then
FromISO8601 = FromISO8601 - CInt(Mid(s,18,1) & "1") * CDate(Mid(s,19,5))
End If

End Function

Function ToISO8601(rdat)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#Cymd

Dim sYMD : sYMD = CStr((Year(rdat)*100 + Month(rdat) )*100 + Day(rdat))
Dim sHMS : sHMS = Right((Hour(rdat)*100+Minute(rdat))*100+Second(rdat)+1e7,
6)

ToISO8601 = sYMD & "T" & Left(sHMS, 2) & ":" & Mid(sHMS, 3,2) & ":" &
Right(sHMS, 2)

End Function

Function AddElem(roParent, rsName, rvntValue)
Set AddElem = roParent.ownerDocument.createElement(rsName)
roParent.appendChild AddElem
If Not IsNull(rvntValue) Then AddElem.Text = rvntValue
End Function
%>


Its not a good idea to attempt to build XML output using response writes.
The code does not properly encode characters that have meaning in XML nor
was the character encoding correct. Had any files contained a & or a
character outside the base ASCII range the generated output would be
corrupt. My code uses DOM to build the XML, it makes the code much more
readable as well.

Note that my code uses ISO8601 formating for the date values all the
original code. Also it does not even attempt to place path info into the XML
nor does it include counts or size totals. All of these pieces of info can
be derived from the XML.

I have included your request to drop files found in the data folder itself
although I would have prefered that the data folder not have other files in
it. (Caveat, the folder name 'data' is case sensitive).

Call this page like this:-

/root/listnewfiles.asp?cutoff=20080819T21:30:00

What do you do with this XML once received?
 
B

Bryan

Anthony,
Thanks for the sample code... I'll try it out..
The code is used by another compiled program to download files from a web
server. Basically all files that are newer than the cutoff date are returned
in the xml, then another program downloads the files. I don't have any
control over the other program, so the xml has to look/function like the
existing xml to work.
Thanks again!
--
Thanks!
Bryan


Anthony Jones said:
Bryan said:
Hello group.
I have some code (given to me), but I don't know alot about ASP, so I was
hoping someone here can help. Running on Win 2008 server.

The code below will scan a folder and subfolder with a date/time input and
return xml structure off all files that are newer than the supplied date/time.

The problem is that the returned xml has path names like
C:\folder\subfolder\filename.ext
I would like it to be more like /folder/subfolder/filename.ext
Also, the initial path gets returned in the xml "data", but I only want the
sub folders below "data" to get scanned and info returned...
Any help would be greatly appreciated.

function indent(iTreeLevel)
dim rv : rv = ""
if iTreeLevel > 0 then
for i = 1 to iTreeLevel
rv = rv & " "
next
end if
indent = rv
end function

'==========================================

function newItemsCount(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + 1
End If
Next
newItemsCount = rv
end function

'==========================================

function newItemsSize(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + objFile.Size
End If
Next
newItemsSize = rv
end function

'==========================================

sub FolderListing(strPath, dCutoffDate, blnRecursive, iTreeLevel)

Dim objFolder
Set objFolder = objFSO.GetFolder(strPath)

response.write(indent(iTreeLevel) & "<folder name=""" & objFolder.Name &
""" newitems=""" & newItemsCount(objFolder, dCutoffDate) & """
newitems_size=""" & newItemsSize(objFolder, dCutoffDate) & """>" & vbCrLf)

For Each objFile In objFolder.Files
sFileSize = objFile.Size
sFileName = objFile.Name
sFileType = objFile.Type
sFileCreated = objFile.DateCreated
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
response.write(indent(iTreeLevel) & " <file name=""" & sFileName & """
size=""" & sFileSize & """ date=""" & sFileModified & """ url=""" & strPath &
"\" & sFileName & """/>" & vbCrLf)
End If
Next

If blnRecursive Then
Dim objSubFolders
Set objSubFolders = objFolder.SubFolders
For Each objFolder in objSubFolders
sFolderName = objFolder.Name
sFolderPath = strPath & "\" & sFolderName
FolderListing sFolderPath, dCutoffDate, blnRecursive, iTreeLevel+1
Next
End if

response.write(indent(iTreeLevel) & "</folder>" & vbCrLf)

end sub

'===========================================================================
==============


sDateTime = unescape(Request.QueryString)
aDateTime = split(sDateTime, " ")
sDate = aDateTime(0)
sTime = aDateTime(1) & " " & aDateTime(2)
dDate = DateValue(sDate)
dTime = TimeValue(sTime)
dDateTime = dDate + dTime



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


%>



<?xml version="1.0" encoding="utf-8"?>

<newfiles fromdate="<%= dDate %>" datestr="<%= sDate %>" timestr="<%= sTime
%>" resultdatetime="<%= dDateTime %>">

<%
FolderListing server.MapPath("data"), dDateTime, true, 0
%>

</newfiles>


Could not bring myself to tweak that code. Here is an alternative ASP:-

<%

Dim gfso : Set gfso = Server.CreateObject("Scripting.FileSystemObject")
Dim gdatCutOff : gdatCutOff = FromISO8601(Request.QueryString("cutoff"))

Dim goXML : Set goXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
goXML.LoadXML "<newItems />"

Dim gelemNewFiles : Set gelemNewFiles = goXML.documentElement

gelemNewFiles.setAttribute "from", ToISO8601(gdatCutOff)

Dim goDataFolder : Set goDataFolder = gfso.GetFolder(Server.MapPath("data"))

GetFolderXML gelemNewFiles, goDataFolder, gdatCutOff

DropElems gelemNewFiles, "folder[@name='data']/file"

Response.ContentType = "text/xml"
Response.CharSet = "UTF-8"
goXML.Save Response

Sub GetFolderXML(relemParent, roFolder, rdatCutOff)

Dim oFolder
Dim oFile
Dim elemFolder
Dim elemFile

Set elemFolder = AddElem(relemParent, "folder", Null)
elemFolder.setAttribute "name", roFolder.Name

For Each oFolder In roFolder.SubFolders
GetFolderXML elemFolder, oFolder, rdatCutOff
Next

For Each oFile In roFolder.Files
If oFile.DateLastModified > rdatCutOff Then
Set elemFile = AddElem(elemFolder, "file", Null)
elemFile.setAttribute "name", oFile.Name
elemFile.setAttribute "size", oFile.Size
elemFile.setAttribute "lastModified", ToISO8601(oFile.DateLastModified)
End If
Next

End Sub

Sub DropElems(relem, rsXPath)

Dim oNode
Dim oList : Set oList = relem.SelectNodes(rsXPath)
Dim lDummy : lDummy = oList.length 'Fill list
For Each oNode in oList
oNode.parentNode.removeChild oNode
Next

End Sub

Function FromISO8601(s)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#DS
' Returns date in local time if timezone not present or GMT if timezone is
present
FromISO8601 = DateSerial(Mid(s,1,4), Mid(s,5,2), Mid(s,7,2))

If Len(s) > 8 Then
FromISO8601 = FromISO8601 + CDate(Mid(s,10,8))
End If

If Len(s) > 17 Then
FromISO8601 = FromISO8601 - CInt(Mid(s,18,1) & "1") * CDate(Mid(s,19,5))
End If

End Function

Function ToISO8601(rdat)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#Cymd

Dim sYMD : sYMD = CStr((Year(rdat)*100 + Month(rdat) )*100 + Day(rdat))
Dim sHMS : sHMS = Right((Hour(rdat)*100+Minute(rdat))*100+Second(rdat)+1e7,
6)

ToISO8601 = sYMD & "T" & Left(sHMS, 2) & ":" & Mid(sHMS, 3,2) & ":" &
Right(sHMS, 2)

End Function

Function AddElem(roParent, rsName, rvntValue)
Set AddElem = roParent.ownerDocument.createElement(rsName)
roParent.appendChild AddElem
If Not IsNull(rvntValue) Then AddElem.Text = rvntValue
End Function
%>


Its not a good idea to attempt to build XML output using response writes.
The code does not properly encode characters that have meaning in XML nor
was the character encoding correct. Had any files contained a & or a
character outside the base ASCII range the generated output would be
corrupt. My code uses DOM to build the XML, it makes the code much more
readable as well.

Note that my code uses ISO8601 formating for the date values all the
original code. Also it does not even attempt to place path info into the XML
nor does it include counts or size totals. All of these pieces of info can
be derived from the XML.

I have included your request to drop files found in the data folder itself
although I would have prefered that the data folder not have other files in
it. (Caveat, the folder name 'data' is case sensitive).

Call this page like this:-

/root/listnewfiles.asp?cutoff=20080819T21:30:00

What do you do with this XML once received?
 
B

Bryan

Anthony,
I've put the asp file in a folder just above the 'data' folder....
so C:\........\GT\data
The asp is located in the GT folder.
I get an internal error.
I'm calling it like this:
http://www.hurricanealley.net/GT/test2.asp?cutoff=20080819T21:30:00

Any suggestions?
Thanks again,
Bryan

--
Thanks!
Bryan


Anthony Jones said:
Bryan said:
Hello group.
I have some code (given to me), but I don't know alot about ASP, so I was
hoping someone here can help. Running on Win 2008 server.

The code below will scan a folder and subfolder with a date/time input and
return xml structure off all files that are newer than the supplied date/time.

The problem is that the returned xml has path names like
C:\folder\subfolder\filename.ext
I would like it to be more like /folder/subfolder/filename.ext
Also, the initial path gets returned in the xml "data", but I only want the
sub folders below "data" to get scanned and info returned...
Any help would be greatly appreciated.

function indent(iTreeLevel)
dim rv : rv = ""
if iTreeLevel > 0 then
for i = 1 to iTreeLevel
rv = rv & " "
next
end if
indent = rv
end function

'==========================================

function newItemsCount(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + 1
End If
Next
newItemsCount = rv
end function

'==========================================

function newItemsSize(objFolder, dCutoffDate)
dim rv : rv = 0
dim sFileModified
For Each objFile In objFolder.Files
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
rv = rv + objFile.Size
End If
Next
newItemsSize = rv
end function

'==========================================

sub FolderListing(strPath, dCutoffDate, blnRecursive, iTreeLevel)

Dim objFolder
Set objFolder = objFSO.GetFolder(strPath)

response.write(indent(iTreeLevel) & "<folder name=""" & objFolder.Name &
""" newitems=""" & newItemsCount(objFolder, dCutoffDate) & """
newitems_size=""" & newItemsSize(objFolder, dCutoffDate) & """>" & vbCrLf)

For Each objFile In objFolder.Files
sFileSize = objFile.Size
sFileName = objFile.Name
sFileType = objFile.Type
sFileCreated = objFile.DateCreated
sFileModified = objFile.DateLastModified
If (sFileModified > dCutoffDate) Then
response.write(indent(iTreeLevel) & " <file name=""" & sFileName & """
size=""" & sFileSize & """ date=""" & sFileModified & """ url=""" & strPath &
"\" & sFileName & """/>" & vbCrLf)
End If
Next

If blnRecursive Then
Dim objSubFolders
Set objSubFolders = objFolder.SubFolders
For Each objFolder in objSubFolders
sFolderName = objFolder.Name
sFolderPath = strPath & "\" & sFolderName
FolderListing sFolderPath, dCutoffDate, blnRecursive, iTreeLevel+1
Next
End if

response.write(indent(iTreeLevel) & "</folder>" & vbCrLf)

end sub

'===========================================================================
==============


sDateTime = unescape(Request.QueryString)
aDateTime = split(sDateTime, " ")
sDate = aDateTime(0)
sTime = aDateTime(1) & " " & aDateTime(2)
dDate = DateValue(sDate)
dTime = TimeValue(sTime)
dDateTime = dDate + dTime



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


%>



<?xml version="1.0" encoding="utf-8"?>

<newfiles fromdate="<%= dDate %>" datestr="<%= sDate %>" timestr="<%= sTime
%>" resultdatetime="<%= dDateTime %>">

<%
FolderListing server.MapPath("data"), dDateTime, true, 0
%>

</newfiles>


Could not bring myself to tweak that code. Here is an alternative ASP:-

<%

Dim gfso : Set gfso = Server.CreateObject("Scripting.FileSystemObject")
Dim gdatCutOff : gdatCutOff = FromISO8601(Request.QueryString("cutoff"))

Dim goXML : Set goXML = Server.CreateObject("MSXML2.DOMDocument.6.0")
goXML.LoadXML "<newItems />"

Dim gelemNewFiles : Set gelemNewFiles = goXML.documentElement

gelemNewFiles.setAttribute "from", ToISO8601(gdatCutOff)

Dim goDataFolder : Set goDataFolder = gfso.GetFolder(Server.MapPath("data"))

GetFolderXML gelemNewFiles, goDataFolder, gdatCutOff

DropElems gelemNewFiles, "folder[@name='data']/file"

Response.ContentType = "text/xml"
Response.CharSet = "UTF-8"
goXML.Save Response

Sub GetFolderXML(relemParent, roFolder, rdatCutOff)

Dim oFolder
Dim oFile
Dim elemFolder
Dim elemFile

Set elemFolder = AddElem(relemParent, "folder", Null)
elemFolder.setAttribute "name", roFolder.Name

For Each oFolder In roFolder.SubFolders
GetFolderXML elemFolder, oFolder, rdatCutOff
Next

For Each oFile In roFolder.Files
If oFile.DateLastModified > rdatCutOff Then
Set elemFile = AddElem(elemFolder, "file", Null)
elemFile.setAttribute "name", oFile.Name
elemFile.setAttribute "size", oFile.Size
elemFile.setAttribute "lastModified", ToISO8601(oFile.DateLastModified)
End If
Next

End Sub

Sub DropElems(relem, rsXPath)

Dim oNode
Dim oList : Set oList = relem.SelectNodes(rsXPath)
Dim lDummy : lDummy = oList.length 'Fill list
For Each oNode in oList
oNode.parentNode.removeChild oNode
Next

End Sub

Function FromISO8601(s)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#DS
' Returns date in local time if timezone not present or GMT if timezone is
present
FromISO8601 = DateSerial(Mid(s,1,4), Mid(s,5,2), Mid(s,7,2))

If Len(s) > 8 Then
FromISO8601 = FromISO8601 + CDate(Mid(s,10,8))
End If

If Len(s) > 17 Then
FromISO8601 = FromISO8601 - CInt(Mid(s,18,1) & "1") * CDate(Mid(s,19,5))
End If

End Function

Function ToISO8601(rdat)
'See http://www.merlyn.demon.co.uk/vb-date1.htm#Cymd

Dim sYMD : sYMD = CStr((Year(rdat)*100 + Month(rdat) )*100 + Day(rdat))
Dim sHMS : sHMS = Right((Hour(rdat)*100+Minute(rdat))*100+Second(rdat)+1e7,
6)

ToISO8601 = sYMD & "T" & Left(sHMS, 2) & ":" & Mid(sHMS, 3,2) & ":" &
Right(sHMS, 2)

End Function

Function AddElem(roParent, rsName, rvntValue)
Set AddElem = roParent.ownerDocument.createElement(rsName)
roParent.appendChild AddElem
If Not IsNull(rvntValue) Then AddElem.Text = rvntValue
End Function
%>


Its not a good idea to attempt to build XML output using response writes.
The code does not properly encode characters that have meaning in XML nor
was the character encoding correct. Had any files contained a & or a
character outside the base ASCII range the generated output would be
corrupt. My code uses DOM to build the XML, it makes the code much more
readable as well.

Note that my code uses ISO8601 formating for the date values all the
original code. Also it does not even attempt to place path info into the XML
nor does it include counts or size totals. All of these pieces of info can
be derived from the XML.

I have included your request to drop files found in the data folder itself
although I would have prefered that the data folder not have other files in
it. (Caveat, the folder name 'data' is case sensitive).

Call this page like this:-

/root/listnewfiles.asp?cutoff=20080819T21:30:00

What do you do with this XML once received?
 
A

Anthony Jones

Bryan said:
Anthony,
I've put the asp file in a folder just above the 'data' folder....
so C:\........\GT\data
The asp is located in the GT folder.
I get an internal error.
I'm calling it like this:
http://www.hurricanealley.net/GT/test2.asp?cutoff=20080819T21:30:00

Any suggestions?


Well telling me what the internal error actually is might help.

My approach took the view that you had control over the receiver. Since you
haven't got control over that end you will need to tweak the approach to
generate the same XML structure the client end expected.
 
B

Bryan

I'm not sure what the error is. I only see the resulting IE error page.
What is the best approach to debug? I'm only using a text editor.
Thanks!
Bryan
 
A

Anthony Jones

Bryan said:
I'm not sure what the error is. I only see the resulting IE error page.
What is the best approach to debug? I'm only using a text editor.


In IIS manager click on the application then in the Features View pane
double click 'ASP' in the IIS section.

Expand the Debugging Properties and change 'Send Errors To Browser' to True

Now IIS will send more info to the browser.
 
O

Old Pedant

Bryan said:
I'm not sure what the error is. I only see the resulting IE error page.

Also, fix your browser!

If using MSIE:
-- Click on TOOLS menu
-- Click on INTERNET OPTIONS menu item
-- Click on ADVANCED tab
-- *UN*check "Show friendly HTTP error messages"
-- OK

Now you should get more useful error output.
 
O

Old Pedant

It's not a big deal, but there's really no need for an INDENT function.

VBScript has the built-in SPACE function, already.

So calling
Space(iTreeLevel)
is 100% equivalent to your
indent(iTreeLevel)
and, of course, somewhat faster.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top