Created
August 13, 2010 13:40
-
-
Save bussiere/522907 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#what : Changing the drive of a list of shortcut automatically must be placed in the shortcut directory on the usb key | |
#why : i've made some shortcut on my usb key for launchy and i had always to change them if on one pc the usb drive was i: on an other it was k: #it was such a pain each time. Now it change all the shortcut automatically. | |
import sys,glob,re | |
import pythoncom | |
from win32com.shell import shell | |
import win32com | |
import win32com.client | |
import string | |
""" | |
By bussiere bussiere @at gmail.com | |
thanks to : | |
http://www.blog.pythonlibrary.org/ | |
http://www.blog.pythonlibrary.org/?p=21 | |
and : | |
http://codesnippets.joyent.com/tag/python | |
http://codesnippets.joyent.com/tag/python#post529 | |
""" | |
__Author__ ="bussiere" | |
__Email__ = "bussiere @at gmail.com" | |
__Titre__ = "Changing shortcut on a usb key v2" | |
__Description__ = "Changing the drive of a list of shortcut automatically must be placed in the shortcut directory on the usb key" | |
__Discussion__ = "i've made some shortcut on my usb key for http://www.launchy.net/ launchy and i had always to change them if on one pc the usb drive was i: on an other it was k: it was such a pain each time. Now it change all the shortcut automatically." | |
__Tags__ ="Usb shortcut windows key raccourcis" | |
class Win32Shortcut: | |
def __init__(self, lnkname): | |
self.shortcut = pythoncom.CoCreateInstance( | |
shell.CLSID_ShellLink, None, | |
pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) | |
self.shortcut.QueryInterface(pythoncom.IID_IPersistFile).Load(lnkname) | |
def __getattr__(self, name): | |
return getattr(self.shortcut, name) | |
def main(): | |
shell2 = win32com.client.Dispatch('WScript.Shell') | |
# here we just get the drive where is the usb key | |
drive = sys.path[0][0:2] | |
#here we list all the file on the shortcut directory | |
files = glob.glob(sys.path[0]+'/*') | |
# here we take one file path | |
path = glob.glob(sys.path[0])[0] | |
#we normalize the path for python | |
path = string.replace(path,'\\','\\\\') | |
# we prepare a regexp for finding the shortcuts | |
p = re.compile('\.lnk') | |
for file in files : | |
# we list all the files and find the shortcuts .lnk | |
if p.search(file) : | |
# we get the shortcut | |
s = Win32Shortcut(file) | |
#we take the target directory of the shortcut | |
itemPath = s.GetPath(0)[0] | |
#we normalize the path of the shortcut | |
file = string.replace(file,'\\','\\\\') | |
# we overwrite the shortcut (same directory, same name). | |
shortcut = shell2.CreateShortCut(file) | |
#we replace the target path (drive = usb drive, path without the drive = itemPath[2:]) | |
shortcut.Targetpath = drive + itemPath[2:] | |
#we set the directory drive | |
shortcut.WorkingDirectory = path | |
#we save the shortcut | |
shortcut.save() | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment