问题
如果您需要在外部程序中打开文件,通常可以使用 JSL Open() 函数。 但是,如果您想打开 JMP 知道如何导入的文件类型,您最终可能会导入文件而不是在外部程序中打开。 打开 Excel 文件是一个常见的用例。
解决方案
为此,我们可以使用 JSL RunProgram() 函数。 Windows 需要一些特殊处理,以便 JMP 在程序关闭之前不会冻结,进程也不需要在 JMP 关闭之前关闭。
/* Function: openFileInOSDefault
Open file in the operating system default program
Arguments:
filepath - local path file
*/
openFileInOSDefault = Function({filepath},
If( Host is( "Windows" ),
Run Program(
Executable( "PowerShell.exe" ),
Options(
Eval Insert( "\[-Command "& {Start-Process '^filepath^'}"]\" )
),
Read function( "text" )
);
,
RunProgram(
Executable( "/usr/bin/open" ),
Options( filepath ),
ReadFunction( "text" )
)
);
);
讨论
通常,我认为您不需要了解它究竟是如何工作的,您可以将它插入您的脚本并使用您要打开的文件的路径来调用它。