首選BAT是無法自已創(chuàng)建 LNK的快捷方式的, URL的快捷方式可以創(chuàng)建
一、 簡潔的方法
先通過Windows為相應(yīng)的程序創(chuàng)建一個快捷方式,再將系統(tǒng)自動生成的快捷方式名修改一下,也就是把快捷方式名中的空格刪除。然后可以建立一個批處理文件,使用move命令或copy命令即可完成。比如需要為C盤tv目錄下的vnc.exe在桌面是創(chuàng)建快捷方式,可先通過Windows系統(tǒng)為該程序創(chuàng)建一個快捷方式vnc.lnk,然后建立個bat文件,在文件中編寫如下命令:
cd %userprofile%\桌面
copy c:\tv\vnc.lnk
或者輸入以下命令:
cd %userprofile%\桌面
move c:\tv\vnc.lnk
或者:
copy QQ2010.lnk "%userprofile%\桌面\QQ2010.lnk"
二、稍微復(fù)雜點的辦法
直接建立一個批處理文件,在其中輸入以下命令(依然以“為C盤tv目錄下的vnc.exe在桌面是創(chuàng)建快捷方式”為例):
set path=c:\tv\vnc.exe
set topath="%USERPROFILE%\桌面\VNC.url"
echo [InternetShortcut] >> %topath%
echo URL="%path%" >> %topath%
echo IconIndex=0 >> %topath%
echo IconFile=%path% >> %topath%
通過BAT創(chuàng)建 VBS 和 vbs來創(chuàng)建快捷方式
思路:
思路:通過bat輸出vbs代碼,然后調(diào)用WScript.exe執(zhí)行相關(guān)代碼
@echo
set ShortcutTargetPath="%~dp0%..\External\DEVENV.bat"
set ShortcutPath="C:\Documents and Settings\lanx\Desktop\TCT.lnk"
set IconLocationPath="%VS80COMNTOOLS%..\IDE\devenv.exe,3"
set HotKey="CTRL+SHIFT+T"
echo Set WshShell=WScript.CreateObject("WScript.Shell") >>tmp.vbs
echo Set Shortcut=WshShell.CreateShortCut(%ShortcutPath%) >>tmp.vbs
echo Shortcut.Hotkey = %HotKey% >>tmp.vbs
echo Shortcut.IconLocation=%IconLocationPath% >>tmp.vbs
echo Shortcut.TargetPath=%ShortcutTargetPath% >>tmp.vbs
echo Shortcut.Save >>tmp.vbs
"%SystemRoot%\System32\WScript.exe" tmp.vbs
@del /f /s /q tmp.vbs
四 用API來創(chuàng)建
編寫一個程序,通過API函數(shù)為相應(yīng)的程序創(chuàng)建快捷方式
通過Shell編程達到目的,但是這種方法在XP中不太實用,因為不容易得到不同用戶的桌面目錄。下面是MFC代碼:
HRESULT CttDlg::CreateShortcut(LPCSTR pszPathObj, LPSTR pszParam, LPSTR pszPath, LPSTR pszPathLink,LPSTR pszDesc)
{
HRESULT hres ;
IShellLink * psl ;
IPersistFile* ppf ;
WORD wsz[ 100] ;
CoInitialize(NULL);
hres = (HRESULT)CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **) &psl) ;
if( FAILED( res))
{
CoUninitialize();
return FALSE ;
}
// set the path to the shortcut target, and add the description
psl -> SetPath(pszPathObj);
psl -> SetArguments( pszParam) ;
psl -> SetDescription(pszDesc);
psl -> SetWorkingDirectory(pszPath);
// query IShellLink for the IPersistFile interface for saving the shortcut in persistent storage
hres = (HRESULT)(psl -> QueryInterface( IID_IPersistFile, (void **)&ppf)) ;
if( FAILED( hres))
{
CoUninitialize();
return FALSE ;
}
// ensure that that string is ANSI
MultiByteToWideChar( CP_ACP, 0, pszPathLink, -1, (LPWSTR)wsz, 100);
// save the link by calling IPersistFile::Save
hres = ppf -> Save((LPCOLESTR)wsz, STGM_READWRITE) ;
// release the IPersistFile interface
ppf ->Release();
// release the IShellLink interface
psl ->Release();
CoUninitialize();
return hres ;
}
為了通知系統(tǒng)桌面發(fā)生變化,需要再定義如下函數(shù):
void CttDlg::NotifyShell(LONG wEventId, LPSTR szPath)
{
SHChangeNotify(wEventId,SHCNF_FLUSH | SHCNF_PATH,szPath,0);
SHChangeNotify(SHCNE_UPDATEDIR | SHCNE_INTERRUPT,SHCNF_FLUSH | SHCNF_PATH,szPath,0);
}
然后就可以通過如下代碼進行調(diào)用了:
CreateShortcut("c:\\windows\\notepad.exe","c:\\config.sys","c:\\windows","C:\\Documents and Settings\\Xu YingMing\\桌面記事本.lnk","記事本");
NotifyShell(SHCNE_MKDIR | SHCNE_INTERRUPT,"c:\\windows\\notepad.exe");
以上三種方法皆可實現(xiàn)目的,但是前兩種相對簡單,而第三種方法就要復(fù)雜的多。