4

I have a text file with following structure :-

C:\Users\abc\Desktop\New Folder\sample.txt
AccountName->AbcPos
AccountName->dblLayer
queryAccount->qskxyz
queryName->qixyz
queryName->abc
queryName->def

next

C:\Users\abc\Desktop\New Folder\New folder\sample3.txt
AccountName->AbcPos
AccountName->dblLayer
queryAccount->qskxyz
queryName->qixyz
AccountName->Names
AccountName->prelLayer
queryAccount->serchTerm
queryName->myName1

next

C:\Users\abc\Desktop\New Folder\sample1.txt
AccountName->AbcPos
AccountName->dblLayer
queryAccount->qskxyz
queryName->qixyz

next

C:\Users\abc\Desktop\New Folder\sample2.txt
AccountName->AbcPos
AccountName->dblLayer
queryAccount->qskxyz
queryName->qixyz
queryName->abc
queryName->def
AccountName->Names
AccountName->prelLayer
queryAccount->serchTerm
queryName->myName1

next

I have to show this information in tabular format on a webpage using vbscript. The table should be like:-

+------+--------------+--------------+--------------+-----------+
| Path | AccountName1 | AccountName2 | QueryAccount | QueryName | 
+------+--------------+--------------+--------------+-----------+
|C:\...| AbcPos       | dblLayer     | qskxyz       | qixyz     |
+------+--------------+--------------+--------------+-----------+
|C:\...| AbcPos       | dblLayer     | qskxyz       | abc       |
+------+--------------+--------------+--------------+-----------+
|C:\...| AbcPos       | dblLayer     | qskxyz       | def       |
+------+--------------+--------------+--------------+-----------+
|C:\3..| AbcPos       | dblLayer     | qskxyz       | qixyz     |
+------+--------------+--------------+--------------+-----------+
|C:\3..| Names        | prelLayer    | qskxyz       | abc       |
+------+--------------+--------------+--------------+-----------+
|C:\3..| AbcPos       | dblLayer     | searchTerm   | myName1   |
+------+--------------+--------------+--------------+-----------+

Currently I am just reading text file with vbscript but need to show it in tabular format.

Set dict = CreateObject("Scripting.Dictionary")
Set file = fso.OpenTextFile ("c:\test.txt", 1)
row = 0
Do Until file.AtEndOfStream
  line = file.Readline
  dict.Add row, line
  row = row + 1
Loop

file.Close

I can not post my complete code here as I am not able to copy from my environment.

user692942
  • 16,398
  • 7
  • 76
  • 175
user2816085
  • 655
  • 4
  • 19
  • Define an object, then as you read the file store the values in the appropriate object properties. Store the object in an array of like objects. When you are done looping through the files, loop through your object array and build the html required to display it the way you want to. – Jen R Mar 17 '16 at 12:34
  • How should I decide where to stop reading, next result set etc.... bit complicated. May be I could create hierarchy out of it... – user2816085 Mar 17 '16 at 14:07
  • Do you need an IIS/ASP script or do you want to write an .HTML file? Is the **last** QueryAccount/QueryName value **always** the one to display? – Ekkehard.Horner Mar 17 '16 at 14:38
  • There is an hierarchy, AccountName (highest) to queryName (lowest) – user2816085 Mar 17 '16 at 14:50
  • Do all the files exist in the same folder? Noticed the second in the list is `C:\Users\abc\Desktop\New Folder\New folder` not `C:\Users\abc\Desktop\New Folder`. – user692942 Mar 17 '16 at 15:06
  • There is a text file that contains this kind of log..... – user2816085 Mar 17 '16 at 15:45
  • log.txt has different result set divided by next......... – user2816085 Mar 17 '16 at 15:46

2 Answers2

1

To get you started wrt the parsing of your (one and only) input file:

  1. Loop over the lines (no need to load them into memory)
  2. Use "next" to detect 'end of record'
  3. Split on "->" to get key-value-pairs
  4. Store the interesting values in an array to make format/markup easy via Join

As in:

Option Explicit

Const csSep = "->"

Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim oTS : Set oTS = oFS.OpenTextFile("..\data\36060599.txt")

ReDim aData(4)
Do Until oTS.AtEndOfStream
   Dim sLine  : sLine  = Trim(oTS.ReadLine())
   Dim sValue : sValue = ""
   If InStr(sLine, csSep) Then sValue = Split(sLine, csSep)(1)
   Select Case True
      Case ":" = Mid(sLine, 2, 1) ' the Path
        aData(0) = sLine
      Case "AccountName" = Left(sLine, 11)
        aData(2 + IsEmpty(aData(1))) = sValue
      Case "queryAccount" = Left(sLine, 12)
        aData(3 + IsEmpty(aData(1))) = sValue
      Case "queryName" = Left(sLine, 9)
        aData(4 + IsEmpty(aData(1))) = sValue
      Case "next" = sLine ' End Of Record
'       WScript.Echo "<tr><td>" & Join(aData, "</td><td>") & "</td></tr>"
        WScript.Echo "|" & Join(aData, "|") & "|"
        ReDim aData(4)
   End Select
Loop
oTS.Close

output:

cscript 36060599.vbs
|C:\Users\abc\Desktop\New Folder\sample.txt|AbcPos|dblLayer|qskxyz|def|
|C:\Users\abc\Desktop\New Folder\New folder\sample3.txt|AbcPos|prelLayer|serchTerm|myName1|
|C:\Users\abc\Desktop\New Folder\sample1.txt|AbcPos|dblLayer|qskxyz|qixyz|
|C:\Users\abc\Desktop\New Folder\sample2.txt|AbcPos|prelLayer|serchTerm|myName1|

Can't help you with ASP, sorry.

Ekkehard.Horner
  • 38,498
  • 2
  • 45
  • 96
1

My Implementation is like :-

Set mytable=document.CreateElement("table")
set thead = document.createElement("thead")
set tr=document.createElement("tr")
set th1=document.createElement("th")

th1.setattribute "colSpan","4" 
tr.appendChild th1
thead.appendChild tr
set tr2= document.createElement("tr")
set th1= document.createElement("th")   
set th2= document.createElement("th")
set th3= document.createElement("th")
set th4= document.createElement("th")
set th5= document.createElement("th")
th1.innerText="AccountName1"
th2.innerText="AccoutnName2"
th3.innerText="QueryAccount"
th4.innerText="QueryName"
th5.innerText="Path/Location"
tr2.appendChild th1
tr2.appendChild th2
tr2.appendChild th3
tr2.appendChild th4
tr2.appendChild th5
thead.appendChild tr2
mytable.appendChild thead

.......................
.......................
For Each thing in Fls
......................
........................

set td1 = document.createElement("td")
set td2 = document.createElement("td")
set td3 = document.createElement("td")
set td4 = document.createElement("td")
set td5 = document.createElement("td")

if condition

set tr3=document.createElement("tr")
td1.innerText=nodeinfo(0)
td2.innerText=nodeinfo(1)
td3.innerText=nodeinfo(2)
td4.innerText=node.text
td5.innerHtml="<a href=" & "'" & thing.Path & "'" & ">" & thing.Path &"</a>"

tr3.appendChild td1
tr3.appendChild td2
tr3.appendChild td3
tr3.appendChild td4
tr3.appendChild td5
tbod.appendChild tr3
elseif i=2 then
set tr3=document.createElement("tr")
td1.innerText="--"
td2.innerText=nodeinfo(0)
td3.innerText=nodeinfo(1)
td4.innerText=node.text
td5.innerHtml="<a href=" & "'" & thing.Path & "'" & ">" & thing.Path &"</a>"
tr3.appendChild td1
tr3.appendChild td2
tr3.appendChild td3
tr3.appendChild td4
tr3.appendChild td5
tbod.appendChild tr3
elseif i=1 then
set tr3=document.createElement("tr")
td1.innerText="--"
td2.innerText="--"
td3.innerText=nodeinfo(0)
td4.innerText=node.text
td5.innerHtml="<a href=" & "'" & thing.Path & "'" & ">" & thing.Path &"</a>"
tr3.appendChild td1
tr3.appendChild td2
tr3.appendChild td3
tr3.appendChild td4
tr3.appendChild td5
tbod.appendChild tr3
user2816085
  • 655
  • 4
  • 19