有没有办法从(Windows)命令提示符启动 mathematica 前端(GUI)并让它在没有进一步用户操作的情况下评估笔记本?
即使 mathematica.exe 采用 -run 和 -initfile 选项,它们的工作方式也不一样
就像他们对 math.exe 所做的那样。 (例如,-run ''<
谢谢。第一个答案看起来很有希望,但是我得到了
FrontEndObject::notavail
前端不可用
(根据文档,顺便说一下,它是“UseFrontEnd”。)
也许是路径问题,但是即使在设置 $FrontEndLaunchCommand 之后也没有乐趣..
回复:初始化单元——这个简单的答案似乎完全符合我的需要,除了“你想运行初始化吗……”唠叨框。如果有一个选项 somplace 可以自动启动内核并运行初始化单元,这将非常有用。
顺便说一下,我正在运行 6.0。
最佳答案
你可以试试这个:
在 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
RunFirstGo.bat 然后可以从 Windows 命令控制台运行,如下所示:
cd my documents
runfirstgo
或者,RunFirstGo.bat 可以作为计划任务运行(通过 Windows 控制面板)。
关于scripting - mathematica 从命令行启动前端和评估笔记本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423179/