from win32com.shell import shell, shellcon import pythoncom, win32api, os, sys temp_dir=win32api.GetTempPath() linkname=win32api.GetTempFileName(temp_dir,'cmd')[0] os.remove(linkname) linkname+='.lnk' print 'Link name:',linkname ish=pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink) ish.SetPath(os.environ['cOMSPEC']) ish.SetWorkingDirectory(os.path.split(sys.executable)[0]) ish.SetDescription('shortcut made by python') console_props={ 'Signature':shellcon.NT_CONSOLE_PROPS_SIG, 'InsertMode':True, 'FullScreen':False, ## True looks like "DOS Mode" from win98! 'FontFamily':54, 'CursorSize':75, ## pct of character size 'ScreenBufferSize':(152, 256), 'AutoPosition':False, 'FontSize':(4, 5), 'FaceName':u'', 'HistoryBufferSize':32, 'InputBufferSize':0, 'QuickEdit':True, 'Font':0, ## 0 should always be present, use win32console.GetNumberOfConsoleFonts() to find how many available 'FillAttribute':7, 'PopupFillAttribute':245, 'WindowSize':(128, 32), 'WindowOrigin':(0, 0), 'FontWeight':400, 'HistoryNoDup':False, 'NumberOfHistoryBuffers':32, ## ColorTable copied from a 'normal' console shortcut, with some obvious changes ## These do not appear to be documented. From experimentation, [0] is background, [7] is foreground text 'ColorTable':(255, 8388608, 32768, 8421376, 128, 8388736, 32896, 12582912, 8421504, 16711680, 65280, 16776960, 255, 16711935, 65535, 16777215) } ishdl=ish.QueryInterface(shell.IID_IShellLinkDataList) ishdl.AddDataBlock(console_props) ipf=ish.QueryInterface(pythoncom.IID_IPersistFile) ipf.Save(linkname,1) os.startfile(linkname)