Welcome, guest | Sign In | My Account | Store | Cart
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 :
and :

__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)

    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

if __name__ == "__main__":


  • revision 2 (13 years ago)
  • previous revisions are not available