MathGroup Archive 2010

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

Search the Archive

Re: Bare Bones Backup Button

  • To: mathgroup at smc.vnet.net
  • Subject: [mg111453] Re: Bare Bones Backup Button
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Mon, 2 Aug 2010 07:03:30 -0400 (EDT)

An exchange reported in [mg77581] between DrMajorBob and Selwyn Hollis 
culminated, in essence, in the code below for creating a saveable 
palette with a button to back up the InputNotebook.

If the target directory for the backup (fixed in the code that creates 
the palette) already exists, then each time I click the button, I get an 
unwanted message

   CreateDirectory::filex : ... already exists

in the Messages window.

What is the best way to modify the code so as avoid that message? I can 
think of two methods:

(1) Include a separate test as to whether that directory already exists 
and, if so, by-pass the CreateDirectory phase; or

(2) Somehow trap the CreateDirectory so as to eliminate the message.

For Method (1), how does one tell whether a directory exists? I don't 
find a single function that does it. All I can see is to use first 
FileExistsQ to see if there's some file with the target directory's name 
and second, if the file exists, FileType to check that it's a directory. 
  That seems to be getting unduly complicated.

Method (2) in principle seems simpler, and perhaps wrapping Quiet around 
the entire body of the Module (which is an extended If expression) would 
do the trick. But this would also suppress other messages that one might 
want to see, such as when the directory does not already exist but for 
some reason cannot be created; or that the directory exists but for some 
reason is not writable; etc.

Suggestions?

The code:

CreateDocument[PaletteNotebook[Button["Bare Bones Backup",
   Module[{filename,thisnb=InputNotebook[]},
     If[thisnb=!=$Failed,
        CreateDirectory[
          ToFileName[{"e:/backups","MmaBareBones"}]];
        filename=
          StringJoin[
            StringReplace[(WindowTitle/.AbsoluteOptions[thisnb]),
              s_~~".nb"->s],"_",
          StringJoin[ToString/@ Round/@ Rest[Date[]]],".nb"];
        Export[
          ToFileName[{"e:/backups","MmaBareBones"},filename],
          DeleteCases[NotebookGet[thisnb],Cell[_,"Output",___],
            Infinity]]]]],
     Saveable->True]]

-- 
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower      phone 413 549-1020 (H)
University of Massachusetts                413 545-2859 (W)
710 North Pleasant Street            fax   413 545-1801
Amherst, MA 01003-9305


  • Prev by Date: Re: Mathematica- Use a previous equation into the function Function
  • Next by Date: Re: Dynamic programming and Manipulate
  • Previous by thread: Re: ReplaceAll and ReplaceRepeated Strange Behavior
  • Next by thread: Re: Bare Bones Backup Button