A twitter acquaintaince @zippy1981 recommended the Window's software LogParser as a replacement for MSSQL bcp for my data transfer needs. I downloaded the msi file from Microsoft and tried to install it. As is true with a lot of software at work, I got a message saying the software can't be installed without admin rights.
I tweeted @zippy1981 (actually Justin Dearing in "real life") back saying I couldn't install. He suggested using 7zip to decompress the msi file. I downloaded 7zip portable and followed the instructions and ended up with files with names like these:
LogParser_dll.B1735C0B_1CB5_4257_8281_92109AE41CE6
The names are not handy for the executable, nor will they work, but they are easy enough to decipher - there's an underscore between the extension and a period following the filename with a long string of characters.
Here is the mini, somewhat clunky script I wrote for "fixing" the filenames (I used Python 3.3):
"""
Remove extensions from extracted
msi files.
"""
DIRX = 'C://UserPrograms//LogParserWorking//'
import os
import shutil
filenames = []
x = os.walk(DIRX)
# generator
for y in x:
# lists of files
for filex in y[2]:
filenames.append(filex)
for filex in filenames:
# rip off end
# change _ to .
print(filex)
# reverse
filey = filex[-1::-1]
# strip
dotx = filey.find('.')
filey = filey[dotx + 1:]
# replace underscore
underscore = filey.find('_')
firstpart = filey[:underscore]
firstpart += '.'
secondpart = filey[underscore + 1:]
filey = firstpart + secondpart
filey = filey[-1::-1]
print(filey)
shutil.move(DIRX + filex, DIRX + filey)
And voilá - I've got LogParser without having to bother our IT people for an install.
I'm probably late to the party on this msi extraction concept. Still, I thought there might be other people who are as unaware of it as I was, so I'm blogging it. Thanks for having a look.
No comments:
Post a Comment