Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: What does NotebookDirectory[] do for .m files?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg126110] Re: What does NotebookDirectory[] do for .m files?
  • From: Jesse Perla <jesseperla at gmail.com>
  • Date: Wed, 18 Apr 2012 03:54:13 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jm8qeg$ja9$1@smc.vnet.net> <jmdsop$ac3$1@smc.vnet.net> <jmgr4e$pgr$1@smc.vnet.net>

On Monday, April 16, 2012 6:09:18 AM UTC-4, Alexey Popkov wrote:
> "David Bailey"
> > On 13/04/2012 10:08, Jesse Perla wrote:
> > There are two distinct cases here.
> >
> > If you open a .m file in the FrontEnd, it is treated like a notebook,
> > and NotebookDirectory will work on it.

Thanks, I understand my confusion now.

> > If you use Get ( << ) to open the file, or it is opened because of a
> > Needs command, then things get a bit trickier. While the .m file is
> > being loaded in, $InputFileName is set to the name of the .m file, but
> > not to the complete path!

> Print["$Input is ",$Input];
> Print["$InputFileName is ",$InputFileName];
What if I am running command-line mathematica?  I tried "math.exe < myfile.m" with all three of those variables, to no avail.


To take a more direct approach, what I really want is the ability save output relative to where I run my Mathematica file from (in both the Windows FrontEnd for debugging and command-line linux when I run on a cluster).

It looks like:
* "Directory[]" is set to the current system path when run from the command line.  So if I was careful to run the command-line from the directory of the current .m file, it should work
* "Directory[]" is set to some system default when I open a .m file in the front-end and run it.

So here is a proposed solution, which works on my Windows machine at least:

notebookDirectoryExists = Check[NotebookDirectory[],0]
outputDirectory = If[notebookDirectoryExists == 0, Directory[], notebookDirectoryExists]
Print["outputDirectory is ",outputDirectory]; 



  • Prev by Date: Re: NIntegrate about singular point
  • Next by Date: Re: nonlinearmodelfit problem
  • Previous by thread: Re: What does NotebookDirectory[] do for .m files?
  • Next by thread: Integrating an InterpolatingFunction times another function