Mathematica запускает переднюю часть и eval ноутбук из командной строки - PullRequest
10 голосов
/ 15 сентября 2011

Есть ли способ запустить интерфейсный интерфейс Mathematica (GUI) из командной строки (Windows) и сделать так, чтобы он вызывал ноутбук без дальнейших действий пользователя?

, хотя mathematica.exe принимает параметры -run и -initfile, они не работают одинаково как они делают с math.exe. (-run '' << file.m '' хочет открыть файл с именем '' << file.m '', например) </p>


Спасибо. Первый ответ выглядит многообещающе, однако я получаю FrontEndObject :: notavail Передний конец не доступен

(между прочим, это «UseFrontEnd»).

Возможно, проблема с путём, но даже после установки $ FrontEndLaunchCommand радости нет ...

Re: Ячейка инициализации - этот простой ответ, кажется, делает именно то, что мне нужно, за исключением поля "Вы хотите запустить инициализацию ...". Если есть опция somplace для автоматического запуска ядра и запуска ячеек инициализации, это было бы очень полезно знать.

Кстати, у меня работает 6.0.

Ответы [ 5 ]

10 голосов
/ 15 сентября 2011

Вы можете попробовать это:

В 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 создает файл с именем 'sin.gif 'в каталоге Mathematica.Test.nb также содержит некоторые выходные данные для печати, но, несмотря на то, что они работают во внешнем интерфейсе и сохраняются после запуска, выходные данные для печати не сохраняются.Кроме того, мне еще предстоит выяснить способ выхода из ядра без прерывания процесса интерфейса.

Приложение

Если вы знаете, сколько времени займет процесс, вы можете использовать пакетфайл, чтобы закрыть Mathematica, когда это будет сделано, (готов к следующему запуску).Этот пример делает паузу в 20 секунд перед выключением Mathematica.Обратите внимание, что 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).

5 голосов
/ 15 сентября 2011

Aha ... !!

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

follow up... для полноты --- приведенный выше $ FrontEndLaunchCommand вызывает GUI, чтобы вы могли наблюдать за оценкой (что я хотел). По умолчанию внешний интерфейс запускается в фоновом режиме сервера, поэтому у вас есть доступ к внешним функциям, но вы не видите его запуска.

2 голосов
/ 15 сентября 2011

Оценку выполняет не FrontEnd, а ядро.Вы можете использовать MathematicaScript для его автоматизации.

1 голос
/ 17 мая 2012

Я не знаю, если тема все еще активна, но для тех, кто остановился из-за проблемы «предупреждение ячейки инициализации», вы можете изменить это значение на «Flase» в опции

Инспектор -> Параметры блокнота -> Параметры оценки -> InitializationCellWarning -> False

1 голос
/ 15 сентября 2011

Если это для конкретной записной книжки, вы пытались установить соответствующие ячейки в записной книжке, чтобы иметь свойство InitializationCell ? Или вы хотите сделать это с любым ноутбуком? Если последнее, ответ Sjoerd работает лучше.

...