Re: Bare Bones Backup Button
- To: mathgroup at smc.vnet.net
- Subject: [mg111652] Re: Bare Bones Backup Button
- From: David Reiss <dbreiss at gmail.com>
- Date: Mon, 9 Aug 2010 05:12:56 -0400 (EDT)
- References: <i3m3v4$hkb$1@smc.vnet.net>
On Aug 8, 7:21 am, Murray Eisenberg <mur... at math.umass.edu> wrote: > DirectoryQ works nicely here. I'm surprised it wasn't used in the > originally posted code for BareBonesBackup (perhaps the function didn't > exist then?). > > On 8/4/2010 5:47 AM, David Annetts wrote: > > > > > > > Hi Murray, > > > There is DirectoryQ ... > > > If[Not@DirectoryQ[target], CreateDirectory@target]; > > > D. > > > On 2/08/2010 19:03, Murray Eisenberg 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 ca= n > >> think of two methods: > > >> (1) Include a separate test as to whether that directory already exist= s > >> 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 na= me > >> and second, if the file exists, FileType to check that it's a director= y. > >> That seems to be getting unduly complicated. > > >> Method (2) in principle seems simpler, and perhaps wrapping Quiet arou= nd > >> the entire body of the Module (which is an extended If expression) wou= ld > >> do the trick. But this would also suppress other messages that one mig= ht > >> 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 so= me > >> 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/.AbsoluteOption= s[thisnb]), > >> s_~~".nb"->s],"_", > >> StringJoin[ToString/@ Round/@ Rest[Date[]]],".= nb"]; > >> Export[ > >> ToFileName[{"e:/backups","MmaBareBones"},filen= ame], > >> DeleteCases[NotebookGet[thisnb],Cell[_,"Output= ",___], > >> Infinity]]]]], > >> Saveable->True]] > > -- > Murray Eisenberg mur... at math.umas= s.edu > Mathematics & Statistics Dept. > Lederle Graduate Research Tower phone413 549-1020(H) > University of Massachusetts 413 545-2859(W= ) > 710 North Pleasant Street fax 413 545-1801 > Amherst, MA 01003-9305 DirectoryQ is new in version 7