這個例子使用運行程序讀取 Windows 註冊表以獲取 JMP 最近文件列表中的文件。
temp=runprogram(executable("reg"),options({"query","\["HKCU\Software\SAS Institute Inc.\JMP\Recent\Files"]\"}),readfunction("text"));
names = {};
// typical line: " File7 REG_SZ C:\Users\v1\Desktop\Nanami01.jrn"
patmatch(temp,patrepeat(patregex("\s+File\d+\s+REG_SZ\s+")+patbreak("\!n\!r")>>path+pattest(insertinto(names,path);1)));
show(names,nitems(names))names = {"F:\FileSnapper\Additional.jsl", "F:\FileSnapper\makeAddin.jsl", "F:\rectangula\virusmap3.jsl", "F:\rectangula\virusmap2.jsl", "F: \turtle\drawing.jmpprj", "F:\AVI\video.jmpprj", "C:\Users\v1\Desktop\Nanami01.jrn", "F:\chess\chessPlay.jsl", ...
這匹配函數跳過前導的、不匹配的文本,然後將文件添加到名字只要模式重複。 如果註冊表包含一些其他值(我不知道為什麼會這樣),您可能必須使模式更複雜才能跳過未知鍵並繼續。
在命令窗口中運行 reg query 命令如下所示

讀函數("text") 將相同的文本返回到溫度多變的。
謝謝! 它比我嘗試過的另一種更脆弱的方法更簡單。
我也看了Windows 10 最近的文件和文件夾:指向 JSL 腳本中的“快速訪問”文件和文件夾列表?@Phil_凱這讓我接近類似的信息,但對於 .LNK 文件,不知何故, 指向實際文件。 在我的例子中,我需要目標文件的路徑,但我不知道如何使用 JSL 從 .LNK 獲取路徑。
好吧,這非常酷而且緊湊。我可以看到這對於構建用於文件選擇的自定義對話框很有用。