Subject: [mg30535] Re: [mg30515] How do I script the evaluation of a Notebook

From: Andrzej Kozlowski <andrzej at tuins.ac.jp>

Date: Tue, 28 Aug 2001 04:54:39 -0400 (EDT)

Sender: owner-wri-mathgroup at wolfram.com

Although I find it difficult to imagine why you wish to do such a
strange thing (which makes me suspect that I might be misunderstanding
you) here is one way to do what you seem to be asking for. I will
illustrate it on an example. I guess its easiest to describe by an
example. I have currently opened before me two mathematica windows. The
function Notebooks[] returns a list of allopen notebooks:
In[1]:=
Notebooks[]
Out[1]=
{NotebookObject[<<Untitled-2>>], NotebookObject[<<Untitled-1>>],
NotebookObject[<<Messages>>]}
So we see that there are three opened notebooks, Untitled-2,Untitled-1
and Messages. I have put expressions I want to evaluate in Untitled-1
and I will evaluate the command that tells the kernel to evaluate them
in Untitled-2 (to avoid an infinite loop). So first, in Untitled-2 I
create a notebook object that can be handled by the kernel:
In[2]:=
nb=Notebooks[][[2]]
Out[2]=
NotebookObject[<<Untitled-1>>]
Now I will tell the kernel to evaluate the NotebookObject nb five times.
Again this is done in Untitled-2:
Do[FrontEndExecute[{FrontEndToken[nb, "EvaluateNotebook"]}], {5}]
This will happen so fast you want notice any difference unless you chose
your code in Untitled-1 in such a way as to get a different answer each
time. For example if you just have the single function Random[] and make
sure that Untitled-1 stays visible (is not covered by Untitled-2) you
will see the value in the output cell changing very fast.
Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/
On Saturday, August 25, 2001, at 09:58 AM, Matthew D. Langston wrote:
> How do I script the evaluation of a Notebook?
>
> I'd like to programmatically evaluate a Notebook multiple times in a
> loop.
> Although I don't know how to write it, here is the Mathematic
> pseudo-code
> that I'd like to learn how to write:
>
> nb = NotebookOpen["foo.nb"]
> Do[NotebookEvaluate[nb], {myVar,4}]
>
> I made up the name "NotebookEvaluate" because it is not a real
> Mathematica
> function, but it does describe what I want to do. Is there a function
> in
> Mathematica that takes a Notebook expression and evaluate the entire
> Notebook? Thanks for your help.
>
> Regards, Matt
>
> --
> Matthew D. Langston
> SLD, Stanford Linear Accelerator Center
> langston at SLAC.Stanford.EDU
>
>
>