I have almost 600 blog posts (old blog). I have a page that lists out a link to each blog post in chronological order. This is maintained manually. Everytime I publish a blog post, I add it to the list. Today I realised that this list was incorrect as the post count did not match the number of items on this list. I decided that I was going to regenerate this listing using an export of the blog.
Sounds simple but there were some tricks I had to use. The blog export is a big xml file with all the blog data. Included in there is the title and blog post link. I started to think what should I use to extract a list of title and URL. I thought about downloading an XML reader or using PHP or using the findstr command or using TextPad. I decided on TextPad for convenience as I use it on a daily basis. With TextPad I could find and replace using regular expressions. So, I put the title and URL on a new line and then stripped off unneeded information at the beginning and end of the lines. At some point in time I realised that the quotation character in some titles were replaced with gibberish. I fixed this by opening the blog export in NotePad and then copy and pasting from there into TextPad instead of opening directly in TextPad.
The problem I now faced was that title was coming before URL and I would not be able to use TextPad to generate the final HTML. I decided to create a batch file to do this bit. This is the code I came up with. Learnt a few things in the process. Syntax is pretty strick like else and brackets must be on the same line. Less than and greater than must be escaped. Delayed expansion must be used if I wanted the variable in the loop to be evaluated at execution time.
@echo off setlocal enabledelayedexpansion set result= echo ^<ul^> >> out.html for /f "tokens=*" %%A in (results.txt) do ( if not "!result!" == "" ( echo ^ <li^>^<a href="%%A">!result!^<^/a^>^<^/li^> >> out.html set result= ) else ( set result=%%A ) ) echo ^<^/ul^> >> out.html</a>
Stuff like this I like. I get to utilise my coding and IT background and available tools to solve a problem. I’m documenting what I did here for future reference and to help anyone looking to do similar.