mathematica从命令行启动前端和eval笔记本

时间:2011-09-14 21:25:33

标签: scripting wolfram-mathematica mathematica-frontend

有没有办法从(Windows)命令提示符启动mathematica前端(GUI)并让它在没有进一步用户操作的情况下评估笔记本?

即使mathematica.exe采用-run和-initfile选项,它们的工作方式也不同 就像他们使用math.exe一样。 (-run''<< file.m''想要打开一个名为''<< file.m'& #39;例如)


感谢。第一个答案看起来很有希望,但是我得到了 FrontEndObject :: notavail 前端不可用

(顺便说一句,按照文档#34; UseFrontEnd"顺便说一下。)

也许是一个路径问题,但即使在设置$ FrontEndLaunchCommand没有欢乐之后......

Re:初始化单元 - 这个简单的答案似乎完全符合我的需要,除了"你想要运行初始化。"唠叨的盒子。如果有一个选项somplace来自动启动一个内核并运行那些真正有用的初始化单元格。

我顺便跑了6.0。

5 个答案:

答案 0 :(得分:10)

你可以试试这个:

在C:\ Program Files \ Wolfram Research \ Mathematica \ 7.0中创建一个名为firstgo.m的文件,其中包含:

UsingFrontEnd[Module[{},
file = "C:\\Temp\\Test.nb";
targetnotebook = NotebookOpen[file, Visible -> True];
SelectionMove[targetnotebook, Next, Cell];
SelectionEvaluate[targetnotebook];
NotebookSave[targetnotebook];
NotebookClose[targetnotebook];
]];

在C:\ Temp中创建一个名为Test.nb的文件,其中包含:

Module[{x1=0},
Export["C:\\Program Files\\Wolfram Research\\Mathematica\\7.0\\sin.gif",
Plot[Sin[x],{x,0,6}]];
While[x1<1000000,
If[Mod[x1,100000]==0,Print["x1="<>ToString[x1]]];
x1++]]

然后在Windows命令控制台中运行:

cd C:\Program Files\Wolfram Research\Mathematica\7.0
MathKernel -noprompt -initfile firstgo.m

您将看到Test.nb在Mathematica目录中创建一个名为“sin.gif”的文件。 Test.nb还包含一些打印输出,但尽管在前端运行并在运行后保存,但没有保存打印输出。另外,我还没有想办法在不中断前端进程的情况下退出内核。

附录

如果您知道您的流程需要多长时间,您可以使用批处理文件在Mathematica完成后关闭它(为下一次运行做好准备)。此示例在关闭Mathematica之前暂停20秒。注意,firstgo.m现在被移动到C:\ Temp以进行演示。在我的文档中创建包含以下内容的批处理文件RunFirstGo.bat:

@echo off
setlocal
PATH = C:\Program Files\Wolfram Research\Mathematica\7.0\;%PATH%
echo Launching MathKernel %TIME%
start MathKernel -noprompt -initfile "C:\Temp\firstgo.m"
ping localhost -n 20 > nul
echo Terminating MathKernel %TIME%
taskkill /F /FI "IMAGENAME eq MathKernel.exe" > nul
endlocal

然后可以从Windows命令控制台运行RunFirstGo.bat,如下所示:

cd my documents
runfirstgo

或者,RunFirstGo.bat可以作为计划任务运行(通过Windows控制面板)。

答案 1 :(得分:5)

...阿哈!!

Needs["JLink`"]; 
$FrontEndLaunchCommand="C:\\Program Files\\Wolfram Research\\Mathematica\\6.0\\Mathematica.exe";
ConnectToFrontEnd[];
UseFrontEnd[Module[{}, ...

跟进..完整性 - 上面的$ FrontEndLaunchCommand导致GUI出现,这样你就可以观察评估(我想要的)。默认设置是在后台服务器模式下运行前端,因此您可以访问前端功能,但无法看到它运行。

答案 2 :(得分:2)

进行评估的不是FrontEnd,而是内核。您可以使用MathematicaScript自动执行此操作。

答案 3 :(得分:1)

如果是针对特定笔记本,您是否尝试将笔记本中的相关单元设置为具有属性InitializationCell?或者你想用任何笔记本电脑做到这一点?如果是后者,Sjoerd的答案会更好。

答案 4 :(得分:1)

我不知道该主题是否仍处于活动状态,但对于那些因“初始化单元警告”问题而停止的人,您可以将其更改为“Flase”中的

  

选项检查员 - &gt;笔记本选项 - &gt;评估选项 - &gt; InitializationCellWarning - &gt; False