这个例子使用运行程序读取 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 获取路径。
好吧,这非常酷而且紧凑。我可以看到这对于构建用于文件选择的自定义对话框很有用。