問題
如果您需要在外部程序中打開文件,通常可以使用 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" )
)
);
);
討論
通常,我認為您不需要了解它究竟是如何工作的,您可以將它插入您的腳本並使用您要打開的文件的路徑來調用它。