2011-09-14 7 views
10

C'è un modo per avviare un front-end matematico (GUI) da un prompt dei comandi (Windows) e averlo eval un notebook senza ulteriori azioni da parte dell'utente?mathematica start front end e taccuino eval dalla riga di comando

anche se mathematica.exe accetta le opzioni -run e -initfile non funzionano allo stesso modo come con math.exe. (Run '' < < file.m '' vuole aprire un file chiamato '' < < file.m '', per esempio)


Grazie. La prima risposta sembra essere molto promettente, ma ho FrontEndObject :: NotAvAil Un front-end non è disponibile

(per documenti Si tratta di "UseFrontEnd" a proposito.)

Forse un problema di percorso, ma anche dopo impostazione $ FrontEndLaunchCommand no joy ..

Ri: Cella di inizializzazione: questa semplice risposta sembrerebbe fare esattamente ciò di cui ho bisogno eccetto per la finestra "vuoi eseguire l'inizializzazione ..". Se esiste un'opzione per avviare automaticamente un kernel ed eseguire le celle di inizializzazione che sarebbe davvero utile sapere.

Sono in esecuzione 6.0 tra l'altro.

+0

Consentitemi di darvi il benvenuto su StackOverflow e di ricordare tre cose che facciamo di solito qui: 1) Come ricevete aiuto, provate a darlo anche rispondendo alle domande nel vostro area di competenza 2) Leggi le domande frequenti 3) Quando vedi una buona sessione di domande e risposte, votala usando i triangoli grigi, come la credibilità del sistema si basa sulla reputazione che gli utenti ottengono condividendo le loro conoscenze. Ricorda inoltre di accettare la risposta che risolve meglio il problema, se presente, premendo il segno di spunta. (E sì, ho plagiato da un commento precedente @belisarius) – Verbeia

+0

@ george - UsingFrontEnd è un comando diverso da UseFrontEnd. È documentato in questa pagina: http://reference.wolfram.com/mathematica/guide/StandaloneMathematicaKernels.html –

risposta

5

Aha ... !!

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

follow up..for completezza --- sopra $ FrontEndLaunchCommand fa sì che l'interfaccia grafica a venire in modo da poter osservare la valutazione (Quello che volevo). L'impostazione predefinita è eseguire un front-end in modalità server in background, in modo da avere accesso alle funzioni front-end, ma non riesco a vederlo funzionare.

+0

Interessante. Mostra la valutazione ma il kernel si lamenta. Ho modificato firstgo.m in questo modo per verificarlo: Needs ["JLink'"]; $ FrontEndLaunchCommand = "C: \\ Programmi \\ \\ Wolfram Research Mathematica 8.0 \\ \\ Mathematica.exe"; ConnectToFrontEnd []; UseFrontEnd [Modulo [{}, file = "C: \\ Temp \\ Test.nb"; targetnotebook = NotebookOpen [file, Visible -> True]; SelectionMove [targetnotebook, Next, Cell]; SelectionEvaluate [targetnotebook]; ]]; –

+0

il tiro: nocatch messaggi di avviso che derivi dalla UseFrontEnd eseguito dalla riga di comando di Windows sono state spiegate qui: http://stackoverflow.com/questions/7626491/uncaught-throw-generated-by-jlink-or-usefrontend –

2

Non è FrontEnd che esegue la valutazione ma il kernel. È possibile utilizzare MathematicaScript per automatizzarlo.

1

Se questo è per un notebook specifico, hai provato a impostare le celle pertinenti nel notebook per avere la proprietà InitializationCell? O vuoi farlo con qualsiasi notebook? Se quest'ultimo, la risposta di Sjoerd funziona meglio.

+0

Re: inizializzazione cellulare - che semplice risposta sembrerebbe di fare esattamente quello che ho bisogno di eccezione per il "vuoi avvia l'inizializzazione .. "nag box. Se esiste un'opzione per avviare automaticamente un kernel ed eseguire le celle di inizializzazione che sarebbe davvero utile sapere. – agentp

10

Si può provare questo:

In C: \ Program Files \ Wolfram Research \ Mathematica \ 7.0 creare un file chiamato firstgo.m contenente:

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

E in C: \ Temp creare un file chiamato Test.nb contenente:

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++]] 

Poi, in un Windows console di comando di marcia questo:

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

Vedrete che Test.nb crea un file chiamato "sin.gif" nella directory Mathematica. Test.nb contiene anche alcuni output di stampa, ma nonostante l'esecuzione nel front end e il salvataggio dopo l'esecuzione, non viene salvato alcun output di stampa. Inoltre, devo ancora trovare un modo per uscire dal kernel senza interrompere il processo di front end.

Addendum

Se si sa per quanto tempo il processo sta andando a prendere è possibile utilizzare un file batch per chiudere Mathematica quando è fatto, (pronto per la prossima corsa). Questo esempio si interrompe per 20 secondi prima di arrestare Mathematica. Nota, firstgo.m viene ora spostato in C: \ Temp per scopi di dimostrazione. Creare un file batch RunFirstGo.bat in Documenti contenente:

@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.pipistrello può quindi essere eseguito da una console di comando di Windows in questo modo:

cd my documents 
runfirstgo 

In alternativa, RunFirstGo.bat può essere eseguito come operazione pianificata (tramite il Pannello di controllo di Windows).

+0

Posso confermare che questo metodo funziona bene per i lavori batch. –

1

non so se l'argomento è ancora attivo, ma per coloro che sono fermato al problema "di inizializzazione avvertimento cella", è possibile modificare questo per "Flase" in Impostazioni

Opzione - > Opzioni Notebook -> Opzioni di valutazione -> InitializationCellWarning -> False