Re: Bare Bones Backup Button
- To: mathgroup at smc.vnet.net
- Subject: [mg111514] Re: Bare Bones Backup Button
- From: David Reiss <dbreiss at gmail.com>
- Date: Tue, 3 Aug 2010 06:43:37 -0400 (EDT)
- References: <i368lp$r56$1@smc.vnet.net>
I think that the best way is to simply check to see if the directory exists using FileType[dir]===Directory (pre version 7) or DirectoryQ[dir] (version 7 or above). (by the way, as you know, there is a backup facility in http://scientificarts.com/worklife). --David On Aug 2, 7:03 am, Murray Eisenberg <mur... at math.umass.edu> wrote: > An exchange reported in 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[thisn= b]), > 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 mur... at math.umas= s.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