2014-03-31 162 views
2

如何以編程方式在Windows上解析其最終目標的快捷方式?如何獲得快捷方式的目標?

我指定 「最終」 包含的上述一般情況下 快捷  →   shortcut_1   →…   →   shortcut_n   →   target,其中在shortcuttarget之間的參考鏈中可能存在一個或多個「插入」快捷鍵。
此外,我指定「編程」來排除需要交互式使用MATLAB GUI某些功能的解決方案。

(在Unix系統中,解決捷徑的方法之一是使用類似system(['readlink ' shortcut]),甚至更好,如果有的話,system(['readlink -f ' shortcut]),但我一直沒能找到這樣的事在Windows上。)

回答

1

如果您打開快捷方式文件並閱讀第一行,您應該看到它。

>>fID=fopen(shortcutpath); 
>>C=fgetl(fID); 
C = 
*some weird string* *filepath* *some other weird string* 

然後用正則表達式,你可以很容易地找到它。

+0

但也許你沒有在Windows,但其他的一些快捷方式談論文件的快捷方式(因爲我沒有看到有快捷鍵在這種情況下,一個鏈的點),對不起,如果我誤解。 – Wli

+0

Upvoted這是因爲它似乎是獲得最終文件的結果位置的解決方案的一部分。如果你只是想打開最終的文件,它會更容易,如我的答案中所示。 –

0

假設你的目標只是打開快捷到它的目的地,這似乎是在UNIX上一樣容易。只需使用此代碼在當前目錄打開快捷名爲SC:

!sc.lnk % Equivalent to system('sc.lnk') 

如果文件不在當前目錄中,您需要添加過程的路徑。如果快捷方式引用了快捷方式,它會自動結束最終結果。

0

你可以使用COM做到這一點。

例子:

server = actxserver('WScript.Shell'); 
path = server.CreateShortcut('D:\temp.lnk').TargetPath; 
server.delete; 

隨着Windows的doesn't allow一個快捷方式的快捷方式,你得到的 「終極」 目標。 :)