I have a very large number of bookmarks in Google Chrome. I want to transfer all of them to a windows folder, so that each bookmark will be a shortcut to a website (I want a list of shortcuts, just like any list of regular applications shortcuts). I also would like to preserve the bookmark's name and icon.
I searched for a way to achieve my goal, but all I could find is to either manually Create application shortcuts
in Chrome, or to manually drag & drop links from the HTML file exported from the bookmarks in the Chrome Bookmark manager to a folder.
Since there's no easy solution (AFAIK), I thought about achieving it in another way.
Basically, what I have, is an HTML file called bookmarks.html
(created by the Export bookmarks to HTML file
feature in the Organize
menu inside the Bookmark Manager
. It's a long list of links (<a>
s) - I have more than 250 bookmarks.
I can extract the data I need from the file easily, probably with an XML Parser, though it's possible even with regex, because the structure is known and is the same throughout the whole file:
...
<DT><A HREF="http://data.stackexchange.com/" ADD_DATE="1342120101" ICON="data:image/png;base64,iVBORw0......">Stack Exchange</A>
<DT><A HREF="http://www.istockphoto.com/" ADD_DATE="1285715116" ICON="data:image/png;base64,iVBORw0.......">Web Design</A>
<DT><A HREF="http://icons.mysitemyway.com/" ADD_DATE="1287435657" ICON="data:image/png;base64,iVBORw0........">Ico.etc</A>
<DT><A HREF="http://www.shutterstock.com/" ADD_DATE="1285715294" ICON="data:image/png;base64,iVBORw0.....">Shutterstock</A>
...
The problem is that I don't know how to create a script that would take the data - i.e URL, icon (in base64), and name - and make Windows URL shortcuts using that data. I know of few VB scripts that can create a custom shortcut, but not multiple (well, about 300) shortcuts at once.
Hmm, in combination with a tool like everything that would be usefull, only you will need to do the operation regularly. I suppose it must be possible to get your source right from chrome, anyway here is a script that does what you ask for.
Const ForReading = 1, ForWriting = 2, ForAppending = 8, CreateIfNeeded = true
outpath = "g:\script\shortcut\url2\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
bookmarkfile = "bookmarks.html"
Set bookmarks = objFSO.OpenTextFile(bookmarkfile, ForReading)
Set regEx = New RegExp
regEx.Global = True
Set regEx2 = New RegExp
regEx2.Global = True
regEx2.Pattern = "[^a-zA-Z0-9-_.]"
regEx.Pattern = "<DT><A HREF=""(.*)"" ADD_DATE.*>(.*)</A>"
do until bookmarks.AtEndOfStream
line = bookmarks.readline()
if regEx.test(line) then
shortcut = regEx.Replace(line,"$1")
filename = trim(regEx.Replace(line,"$2"))
filename = Regex2.Replace(filename, "_")
filename = outpath & left(filename, 80) & ".url"
wscript.echo filename
'the following skips invalid filenames, you should add a routine to filter out invalid filename characters in your codeset
on error resume next
Set objFile = objFSO.OpenTextFile(filename, ForWriting, CreateIfNeeded)
if err.number <> 0 then
wscript.echo err.description
end if
objFile.write "[InternetShortcut]" & vbcrlf & "URL=" & shortcut
objFile.close
end if
loop
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With